2009-03-02  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.15.0.

2009-03-02  Guillem Jover  <guillem@debian.org>

	* scripts/t/900_update_alternatives.t: Do not use $srcdir for t.tmp,
	it's actually located in builddir.

2009-03-02  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl (load): Print an actual error on open
	instead of an empty string.

2009-03-02  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Do not use non-ASCII strings on C
	locale.
	(version): Likewise.

2009-03-02  Guillem Jover  <guillem@debian.org>

	* po/POTFILES.in: Remove reference to cleanup-info.pl.
	* scripts/.gitignore: Likewise.

2009-02-27  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Avoid logging too many
	useless messages about status change.

2009-02-27  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm (save, dump): Add new
	parameter asking that #PACKAGE# be replaced on the fly.
	* scripts/dpkg-gensymbols.pl: Replace #PACKAGE# while outputting
	symbols files.
	* man/dpkg-gensymbols.1: Document the new feature.
	* scripts/t/200_Dpkg_Shlibs.t,
	scripts/t/200_Dpkg_Shlibs/symbols.fake-2: Add test-case for
	replacement of #PACKAGE# on the fly (together with test of dump).

2009-02-27  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Add one more sanity check
	verifying that <link> and <path> are different (cf #509667 for a
	sample).

2009-02-27  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Improve output messages
	by identifying their origin and by being more consistent.
	* scripts/t/900_update_alternatives.t: Adjust test suite
	for one error message that's now on standard error instead
	of standard output.

2009-02-27  Guillem Jover  <guillem@debian.org>

	* lib/tarfn.c (get_prefix_name): New function.
	(DecodeTarHeader): On tar_format_ustar and if Prefix is not empty
	call get_prefix_name instead of aborting.
	* man/deb.5: Document that ustar format is now properly supported.

2009-02-27  Guillem Jover  <guillem@debian.org>

	* lib/tarfn.h (enum tar_format): New type.
	(struct TarInfo): Add new format member.
	* lib/tarfn.c (TAR_MAGIC_USTAR, TAR_MAGIC_GNU): New macros.
	(struct TarHeader): Add new Prefix member.
	(DecodeTarHeader): Detect tar formats based on the magic values.
	Abort on tar_format_ustar and an non-empty Prefix.

2009-02-27  Guillem Jover  <guillem@debian.org>

	* lib/fields.c (f_boolean): Use PKGPFIELD to assign to the correct
	member instead of hardcoding to the essential member.

2009-02-27  Guillem Jover  <guillem@debian.org>

	* lib/fields.c (f_boolean): Return if value is an empty string.

2009-02-26  Chris Coulson  <chrisccoulson@googlemail.com>,
            Guillem Jover  <guillem@debian.org>

	* configure.ac (AC_CHECK_HEADERS): Add 'sys/syscall.h'.
	* man/start-stop-daemon.8: Document new option --iosched.
	* utils/start-stop-daemon.c [HAVE_SYS_SYSCALL_H]: Include
	<sys/syscall.h>.
	(HAVE_IOPRIO_SET) [SYS_ioprio_set, linux]: New macro.
	(IOPRIO_CLASS_NONE, IOPRIO_CLASS_RT): New anonymous enum.
	(IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE): Likewise.
	(IOPRIO_WHO_PROCESS, IOPRIO_WHO_PGRP, IOPRIO_WHO_USER): Likewise.
	(IOPRIO_CLASS_SHIFT, IOPRIO_PRIO_VALUE, IO_SCHED_PRIO_MIN)
	(IO_SCHED_PRIO_MAX): New macros.
	(io_sched): New variable.
	(do_help): Document --iosched.
	(ioprio_set) [HAVE_IOPRIO_SET]: New function.
	(parse_io_schedule, set_io_schedule): Likewise.
	(parse_options): Add 'iosched' to longopts. Add 'I:' to getopt_long
	call. Handle 'I' as getopt_long return value. Call parse_io_schedule
	if io_schedule_str is not NULL.
	(main): Print io_sched values if --test is used. Call set_io_schedule
	if io_sched is not NULL.

2009-02-26  Romain Francoise  <rfrancoise@debian.org>,
            Guillem Jover  <guillem@debian.org>

	* src/filesdb.c: Include 'progress.h'.
	(ensure_allinstfiles_available): Call progress_init instead of
	directly printing. Call progress_step if needing to print on each
	package iteration. And call progress_done if needing to print when
	finished.

2009-02-26  Romain Francoise  <rfrancoise@debian.org>,
            Guillem Jover  <guillem@debian.org>

	* lib/Makefile.am (libdpkg_a_SOURCES): Add 'progress.h' and
	'progress.c'.
	* lib/progress.h: New file.
	* lib/progress.c: Likewise.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Add new option --log to
	log to another file than /var/log/dpkg.log.
	* man/update-alternatives.8: Document the new option.
	* scripts/t/900_update_alternatives.t: Call update-alternatives
	with --log /dev/null since the test suite can be run with fakeroot
	and it would try to write to /var/log/dpkg.log because fakeroot
	makes it believe that it is writable.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: update-alternatives should not
	replace real files by symlinks. When --install is called, the
	alternative link should either not exist or already be a link. It
	that's not the case, it will simply skip installing that link and
	display a warning. However if --force is given, it will (try to)
	replace the file.
	* man/update-alternatives.8: Document this behaviour.
	* scripts/t/900_update_alternatives.t: Add corresponding tests in
	the test suite.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* man/update-alternatives.8: Document how --all can be used to
	repair all alternatives on the system in a single command.
	* scripts/update-alternatives.pl: Ensure the above explanation
	is true by ensuring that --config does something sensible when
	no alternative is currently selected and when the user input is
	empty: it will auto-select the best alternative.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Implement --set-selections.
	It's the the counterpart of --get-selections, it reads
	configuration on standard input and reconfigures alternatives
	accordingly.
	* man/update-alternatives.8: Document this option.
	* scripts/t/900_update_alternatives.t: Add corresponding tests in
	the test suite.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Implement --get-selections.
	The new option lists all master alternatives and their status in a
	format simple to parse.
	* man/update-alternatives.8: Document this option.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Installation of a slave
	alternative link is only done if the corresponding slave file is
	available.
	* man/update-alternatives.8: Document this behaviour.
	* scripts/t/900_update_alternatives.t: Add corresponding tests in
	the test suite.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Add more sanity check for
	--install: ensure alternative path and links are absolute, ensure
	master alternative path exists, forbid / and spaces in alternative
	names.
	* scripts/t/900_update_alternatives.t: Add corresponding tests in
	the test suite.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Checks that --install does not
	reuse alternatives or links in a way that is not compatible with
	the current setup.
	* scripts/t/900_update_alternatives.t: Add corresponding tests in
	the test suite.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Add logging to
	/var/log/dpkg.log.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* man/update-alternatives.8: The vocabulary used was misleading
	and not really uniform. Try to standardize and make it match with
	the vocabulary used in the source code too.
	Includes minor fixes to make it match the behaviour of the current
	implementation.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Rewrite it entirely in a more
	object-oriented way. The only behaviour changes concern --config:
	the output is nicer and sorted, it accets a path as well as the
	index of the choice.
	* scripts/t/900_update_alternatives.t: Test suite adjusted to the
	--config change.

2009-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-gencontrol.pl, scripts/dpkg-gensymbols.pl: Reset
	umask to 0022 to ensure that files created in the DEBIAN directory
	have sane permissions.

2009-02-13  Guillem Jover  <guillem@debian.org>

	* src/query.c: Remove bogus comment about '--yet-to-unpack'.

2009-02-11  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Makefile.am: Drop cleanup-info.pl script.
	* man/Makefile.am, man/po/po4a.cfg: Drop cleanup-info(8) manual page.
	* README.feature-removal-schedule: Update information accordingly.

2009-02-11  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Makefile.am: Move update-alternatives, dpkg-divert and
	dpkg-statoverride to /usr/bin as they can be useful to users since
	they have --display or --list options that do not require
	administrative rights.
	* Makefile.am (EXTRA_DIST): Add debian/dpkg.links.

2009-02-11  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-buildpackage.pl: Add new option --target/-T to
	allow a specific debian/rules target to be run. The new --as-root
	option forces the target to be run with root rights.
	Add support for the two common syntaxes for long
	options	("--admindir=…" and "--admindir …").
	* man/dpkg-buildpackage.1: Update documentation accordingly.

2009-02-11  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-buildpackage.1: Fix name of binary target in default
	case.

2009-02-10  Guillem Jover  <guillem@debian.org>

	* src/enquiry.c (assert_version_support): Rename verrev_buf argument
	to version.

2009-02-10  Guillem Jover  <guillem@debian.org>

	* src/enquiry.c (assert_version_support): Add new feature_name
	argument, and use it when printing the output messages. Fix all
	callers.

2009-02-10  Guillem Jover  <guillem@debian.org>

	* src/enquiry.c (assert_version_support): Remove reqversion argument.
	Do not initialize verrev_buf from reqversion, when the epoch is ~0UL.
	(assertpredep): Pass a fully constructed versionrevision to
	assert_version_support, rename versionrevision variable to version
	and remove static keyword.
	(assertepoch): Likewise.
	(assertlongfilenames): Likewise.
	(assertmulticonrep): Likewise.

2009-02-10  Guillem Jover  <guillem@debian.org>

	* src/enquiry.c (assertversion): Rename to ...
	(assert_version_support): ... this.

2009-02-08  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (ohshitvb): Remove function prototype.
	* lib/ehandle.c (ohshitvb): Remove function definition.

2009-02-06  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/t/900_update_alternatives.t: New test-suite for
	update-alternatives.
	* scripts/Makefile.am: Add the previous file.

2009-02-06  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Deal with empty
	files in the administrative directory by ignoring them.

2009-02-06  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Ensure that a non-existent
	alternative result in automatic mode configuration.

2009-02-06  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Change set_links() to
	also reset the main alternative link. Add a parameter to
	make it quiet.
	When --install reinstalls the current and manually selected entry,
	let it recreate the symlinks in case something has gone wrong.

2009-02-06  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Remove the alternative when
	the last choice is removed, even if we are in manual mode.
	* man/update-alternatives.8: Update the documentation
	accordingly to not be as strong about not touching links in manual
	mode.

2009-02-06  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl (set_links): Remove slavelinks
	if needed as well. We create slave links automatically, we should
	remove them in the same way. Otherwise --config or --set will let
	dangling symlinks on the system.

2009-02-06  Guillem Jover  <guillem@debian.org>

	* man/deb.5: Add detailed information of the currently supported
	format.

2009-02-06  Guillem Jover  <guillem@debian.org>

	* ostable: Add gnu-kopensolaris.
	* triplettable: Add gnu-kopensolaris to kopensolaris mapping.

2009-02-06  Guillem Jover  <guillem@debian.org>

	* ostable: Reindent to make room for longer os names.

2009-02-05  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl (rename_mv): Integrate logic to
	not fail if ENOENT is the reason why the rename failed.

2009-02-05  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/update-alternatives.pl: Ensure that a broken link
	in automatic mode doesn't lead to the alternative being set
	on manual mode. Also displays by default (and not only
	when --verbose is given) the message that indicates that
	an alternative is switched to manual mode.

2009-02-05  Raphaël Hertzog  <hertzog@debian.org>
            Osamu Aoki  <osamu@debian.org>

	* scripts/update-alternatives.pl: Allow --config to continue when
	the currently selected alternative doesn't match the only existing
	one. Useful to be able to recover from a broken configuration.
	Also offer the choice in --config mode to go back the automatic
	mode. Add a new --skip-auto option to combine with --all and
	easily review manual and broken alternatives.
	* man/update-alternatives.8: Update the documentation accordingly.

2009-02-04  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Vendor/Ubuntu.pm: Ubuntu vendor object implementing
	lookup of launchpad bugs in changelogs and a safety-check for
	Maintainer fields of forked packages (launched during source
	build).
	* scripts/Makefile.am (EXTRA_DIST): Add
	'scripts/Dpkg/Vendor/Ubuntu.pm'.
	* scripts/po/POTFILES.in: Add 'scripts/Dpkg/Vendor/Ubuntu.pm'.

2009-02-04  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Vendor/Default.pm: Generic vendor object that will
	be used to hook vendor-specific behaviour in multiple places.
	* scripts/Dpkg/Vendor/Debian.pm: Debian variant of that object.
	* scripts/Dpkg/Vendor.pm (get_vendor_object, run_vendor_hook):
	New functions to retrieve the current vendor object and run
	vendor-specific code.
	* scripts/dpkg-source.pl, scripts/dpkg-genchanges.pl: Add first
	vendor hooks to be used by Ubuntu.
	* scripts/Makefile.am (EXTRA_DIST): Add
	'scripts/Dpkg/Vendor/Default.pm' and
	'scripts/Dpkg/Vendor/Debian.pm'.

2009-01-29  Guillem Jover  <guillem@debian.org>

	* lib/Makefile.am (libdpkg_a_SOURCES): Add 'dpkg-test.h'.
	* libcompat/Makefile.am (libcompat_a_SOURCES): Add 'compat.h'.
	* man/Makefile.am (EXTRA_DIST): Add 'po/ChangeLog'.

2009-01-27  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/t/900_Dpkg_Version.t: Renamed into...
	* scripts/t/100_Dpkg_Version.t: and merged test cases previously
	provided by this file so that there's no loss of tests. Also
	adjusted test cases to match the change below.
	* scripts/Dpkg/Version.pm (compare_versions): Handle "<" like "<="
	and ">" like ">=" in order to be consistent with dpkg
	--compare-versions. Emit warnings when they are used as they are
	deprecated.
	* scripts/Makefile.am: Drop scripts/t/900_Dpkg_Version.t from the
	set of extra files to distribute.
	* scripts/dpkg-genchanges.pl: Use "<<" instead of ambiguous "<" in
	version comparison.

2009-01-22  Guillem Jover  <guillem@debian.org>

	* lib/log.c (statusfd_send): Use varbufsubstc to replace new lines
	with spaces.

2009-01-22  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-db.h (varbufsubstc): New function prototype.
	* lib/varbuf.c (varbufsubstc): New function definition.
	* lib/test/t-varbuf.c (test_varbuf_substc): New function.
	(test): Call test_varbuf_substc.

2009-01-22  Guillem Jover  <guillem@debian.org>

	* configure.ac (AC_CONFIG_FILES): Add 'lib/test/Makefile'.
	* lib/Makefile.am (SUBDIRS): New variable.
	* lib/dpkg-test.h: New file.
	* lib/test/Makefile.am: Likewise.
	* lib/test/t-macros.c: Likewise.
	* lib/test/t-path.c: Likewise.
	* lib/test/t-pkginfo.c: Likewise.
	* lib/test/t-string.c: Likewise.
	* lib/test/t-test.c: Likewise.
	* lib/test/t-varbuf.c: Likewise.
	* lib/test/t-version.c: Likewise.

2009-01-20  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-db.h (varbufaddbuf): Rename argument l to size.
	* lib/nfmalloc.c (nfstrnsave): Likewise.
	* lib/varbuf.c (varbufaddbuf): Likewise.

2009-01-20  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-db.h (varbufdupc): Use size_t instead of ssize_t.
	(varbufaddbuf): Use size_t instead of const int.
	(nfstrnsave): Use size_t instead of int.

2009-01-14  Guillem Jover  <guillem@debian.org>

	* man/start-stop-daemon.8: Document new option --procsched.
	* utils/start-stop-daemon.c [_POSIX_PRIORITY_SCHEDULING]: Include
	<sched.h>.
	[!_POSIX_PRIORITY_SCHEDULING]: Define SCHED_OTHER, SCHED_FIFO and
	SCHED_RR with dummy values.
	(struct res_schedule): New type.
	(proc_sched): New variable.
	(do_help): Document --procsched.
	(parse_proc_schedule, set_proc_schedule): New functions.
	(parse_options): Add 'procsched' to longopts. Add 'P:' to getopt_long
	call. Handle 'P' as getopt_long return value. Call parse_proc_schedule
	if proc_schedule_str is not NULL.
	(main): Print proc_sched values if --test is used. Call
	set_proc_schedule if proc_sched is not NULL.

2009-01-14  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (xstrdup): New function.
	(parse_options): Use xstrdup instead of strdup.

2009-01-10  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (main): If changeuser is a uid, call
	getpwuid to get the passwd entry and do the same setup as if it is
	a username.

2009-01-07  Guillem Jover  <guillem@debian.org>

	* man/dpkg-deb.1: Document that -x will modify the extraction
	directory permissions.

2009-01-05  Guillem Jover  <guillem@debian.org>

	* src/main.c (setobsolete): Use warning instead of fprintf call.
	(setforce): Likewise.

2009-01-05  Guillem Jover  <guillem@debian.org>

	* man/start-stop-daemon.8: Clarify that the signal sent by default
	is TERM not KILL.

2009-01-04  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (signal_nr): Initialize with SIGTERM
	instead of literal 15.
	* man/start-stop-daemon.8: Refer to signal as TERM instead of
	literal 15.

2009-01-04  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (LOCALLIBDIR): Move macro to ...
	* dselect/Makefile.am (INCLUDES): ... here, as a -D argument.

	* lib/dpkg.h (DSELECT): Move macro to ...
	* dselect/dselect.h: ... here.

	* lib/dpkg.h (SPLITVERSION, SPLITPARTDEFMAX): Move macros to ...
	* dpkg-split/dpkg-split.h: ... here.

	* lib/dpkg.h (ARCHIVEVERSION, BUILDCONTROLDIR, EXTRACTCONTROLDIR)
	(BUILDOLDPKGFORMAT, OLDARCHIVEVERSION, OLDDEBDIR, OLDOLDDEBDIR)
	(MAXFIELDNAME, INTERPRETER_MAX): Move macros to ...
	* dpkg-deb/dpkg-deb.h: ... here.

2009-01-04  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (printforhelp): Move declaration to ...
	* lib/myopt.h: ... here.

2009-01-04  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-db.h (trig_note_pend_core, trig_note_pend): Make trig
	argument const.
	* lib/triglib.c (trig_record_activation): Likewise.
	(trig_file_activate): Remove now unneeded cast in
	trig_record_activation call.

2009-01-04  Guillem Jover  <guillem@debian.org>

	* lib/myopt.h (MAX_CONFIG_LINE): New macro.
	* lib/myopt.c (myfileopt): Use MAX_CONFIG_LINE instead of
	MAXDIVERTFILENAME.

2009-01-04  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (SHELL, SHELLENVIR): Remove unused macros.
	* src/main.h (check_libver): Remove unused prototype.

2009-01-04  Guillem Jover  <guillem@debian.org>

	* dselect/main.cc (findintable, dme, refreshmenu): Make static.
	* dselect/method.cc (sthfailed): Likewise.
	* dselect/pkgtop.cc (pkgprioritystring): Likewise.

2008-12-30  Guillem Jover  <guillem@debian.org>

	* lib/ehandle.c (badusage): Move function to ...
	* lib/myopt.c: ... here. Include <stdarg.h>.
	* lib/dpkg.h (badusage): Move declaration to ...
	* lib/myopt.h: ... here.
	* dpkg-split/split.c: Include <myopt.h>.

2008-12-30  Colin Watson  <cjwatson@ubuntu.com>

	* src/help.c (preexecscript): Call chdir after chroot.

2008-12-23  Guillem Jover  <guillem@debian.org>

	* lib/log.c (statusfd_send): Pass to write the remaining data, not
	the same initial buffer.

2008-12-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Changelog.pm, scripts/dpkg-buildpackage.pl,
	scripts/dpkg-genchanges.pl, scripts/dpkg-gencontrol.pl,
	scripts/dpkg-source.pl: Also import the default exported functions
	of Dpkg::ErrorHandling and not only the unusual ones.

2008-12-08  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (do_build): Mark strings for translation.
	* dpkg-deb/extract.c (extracthalf): Likewise.
	* dpkg-split/info.c (read_info): Likewise.
	* dpkg-split/join.c (reassemble): Likewise.
	* dpkg-split/queue.c (do_queue): Likewise.
	* dselect/pkglist.cc (packagelist::packagelist): Likewise.
	(packagelist::display): Likewise.
	* lib/log.c (statusfd_send): Likewise.
	* scripts/Dpkg/Source/Package/V1.pm (do_build): Likewise.
	* src/filesdb.c (ensure_packagefiles_available): Likewise.
	(ensure_statoverrides): Likewise.

2008-12-08  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/extract.c (extracthalf): Improve internerr strings, and add
	the invalid value provoking the call.
	* dpkg-split/queue.c (discardsome): Likewise.
	* lib/dbmodify.c (modstatdb_init): Likewise.
	* lib/dump.c (varbufdependency): Likewise.
	* lib/parsehelp.c (varbufversion): Likewise.
	* lib/vercmp.c (versionsatisfied3): Likewise.
	* scripts/Dpkg/Source/Archive.pm (_add_entry): Likewise.
	* src/archives.c (tarobject, archivefiles): Likewise.
	* src/configure.c (deferred_configure, promptconfaction): Likewise.
	* src/depcon.c (describedepcon, depisok): Likewise.
	* src/enquiry.c (yettobeunpacked): Likewise.
	* src/packages.c (packages, process_queue, dependencies_ok): Likewise.
	* src/query.c (enqperpackage): Likewise.
	* src/update.c (updateavailable): Likewise.

2008-12-08  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Deps.pm (implies): Do not mark internerr strings for
	translation.
	* scripts/Dpkg/Fields.pm (output): Likewise.
	* scripts/Dpkg/Source/Package.pm (add_file): Likewise.

2008-12-08  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Deps.pm (parse): Do not use sprintf for warning.
	(implies): Do not use sprintf for internerr.

2008-12-08  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (do_build): Use internerr instead of ohshit. Do not
	mark the string for translation.
	* src/trigcmd.c (do_check): Use internerr instead of abort.
	* lib/dump.c (w_status): Likewise.
	* lib/triglib.c (trig_incorporate): Likewise. Remove <stdlib.h>
	include.
	* scripts/Dpkg/IPC.pm (_sanity_check_opts): Use internerr instead of
	error.
	(fork_and_exec): Likewise. Do not mark the string for translation.
	(wait_child): Likewise.
	* scripts/Dpkg/Source/Archive.pm: Use internerr instead of error from
	Dpkg::ErrorHandling.
	(_add_entry, add_file, add_directory): Likewise.
	* scripts/Dpkg/Source/CompressedFile.pm: Likewise.
	(get_filename): Likewise.
	* scripts/Dpkg/Source/Compressor.pm: Likewise.
	(_sanity_check): Likewise.
	* scripts/Dpkg/Source/Package.p (do_extract, do_build): Likewise.
	* scripts/Dpkg/Source/Patch.pm (add_diff_file): Use error instead of
	internerr.

2008-12-08  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (do_internerr): Reorder arguments. Support format
	strings.
	(internerr): Likewise.
	* lib/ehandle.c (do_internerr): Likewise.

2008-12-08  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/ErrorHandling.pm (@EXPORT): Remove 'failure'.
	(failure): Remove function.
	(syserr): Rename 'failure' string to 'error'.
	(subprocerr): Use error instead of failure.
	* scripts/Dpkg/Checksums.pm (extractchecksum): Likewise.
	* scripts/Dpkg/Source/Functions.pm (erasedir): Likewise.
	* scripts/changelog/debian.pl: Likewise.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-shlibdeps.pl: Likewise.
	* scripts/dpkg-buildpackage.pl: Use syserr instead of failure.

2008-12-08  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/ErrorHandling.pm (@EXPORT_OK): Move info, warning,
	warnerror, error, errormsg, failure, syserr, internerr, subprocerr,
	usageerr and syntaxerr to ...
	(@EXPORT): ... here. Fix all users.

2008-12-08  Modestas Vainius  <modestas@vainius.eu>
	    Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/Objdump.pm (parse): Split into add_object()
	and parse().
	* scripts/Dpkg/Shlibs/SymbolFile.pm (merge_object_from_symfile):
	New function to reintegrate symbols from previous symfiles.
	* scripts/dpkg-shlibdeps.pl: Optimizes it by caching parsed
	symbols files and objdump objects. This way neither of the
	libraries or symbols files are parsed more than once.

2008-12-05  Guillem Jover  <guillem@debian.org>

	* lib/mlib.c: Remove <sys/wait.h> include.
	(checksubprocerr, waitsubproc): Move to ...
	* lib/subproc.c (checksubprocerr, waitsubproc): ... here.
	Include <sys/types.h> and <sys/wait.h>.

2008-12-05  Guillem Jover  <guillem@debian.org>

	* lib/mlib.c (checksubprocerr): Split unrelated conditionals for n
	and PROCPIPE.

2008-12-05  Guillem Jover  <guillem@debian.org>

	* lib/mlib.c (checksubprocerr): Return an explicit 0 instead of n.

2008-12-05  Guillem Jover  <guillem@debian.org>

	* lib/ehandle.c (warning): Print the current program name and a
	'warning' string.
	* lib/mlib.c (checksubprocerr): Use warning() instead of a print
	function.
	* src/archives.c (try_deconfigure_can): Likewise.
	(check_breaks): Likewise.
	(check_conflict): Likewise.
	(wanttoinstall): Likewise.
	* src/configure.c (deferred_configure): Likewise.
	(conffderef): Likewise.
	(md5hash): Likewise.
	* src/errors.c (forcibleerr): Likewise.
	* src/filesdb.c (ensure_packagefiles_available): Likewise.
	* src/help.c (maintainer_script_alternative): Likewise.
	* src/processarc.c (process_archive): Likewise.
	* src/remove.c (deferred_remove): Likewise.
	(removal_bulk_remove_leftover_dirs): Likewise.
	* dpkg-deb/build.c (do_build): Likewise.

2008-12-05  Guillem Jover  <guillem@debian.org>

	* lib/ehandle.c (warning): Do not implicitly print the errno string.
	* lib/myopt.c (myfileopt): Print the errno string in the warning.

2008-12-05  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (warningf): Rename to ...
	(warning): ... this. Fix all callers.

2008-11-19  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Functions.pm (fixperms): Fix chmod call to
	also work when POSIXLY_CORRECT is set.

2008-11-11  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-architecture.pl: Use new style functions calls.
	* scripts/dpkg-distaddfile.pl: Likewise.
	* scripts/dpkg-divert.pl: Likewise.
	* scripts/dpkg-genchanges.pl: Likewise.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-gensymbols.pl: Likewise.
	* scripts/dpkg-scanpackages.pl: Likewise.
	* scripts/dpkg-statoverride.pl: Likewise.
	* scripts/update-alternatives.pl: Likewise.

2008-11-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/Objdump.pm (_parse): Support RUNPATH exactly
	like RPATH but taking precedence over it.

2008-10-22  Guillem Jover  <guillem@debian.org>

	* lib/ehandle.c (error_unwind): Remove unused cleanupentry code.

2008-10-15  Guillem Jover  <guillem@debian.org>

	* lib/dbmodify.c (modstatdb_shutdown): Use importanttmpfile on unlink
	instead of constructing the file name again.

2008-10-15  Guillem Jover  <guillem@debian.org>

	* src/Makefile.am (dpkg_query_SOURCES): Remove 'errors.c'.
	* src/main.h (nerrs): Remove declaration.
	* src/errors.c (nerrs): Change from extern to static.
	* src/query.c (failures): New variable.
	(errabort): Remove variable.
	(listpackages): Use failures instead of nerrs.
	(searchfiles): Likewise.
	(showpackages): Likewise.
	(enqperpackage): Likewise. Do not define nor initialize failures.
	(main): Use failures variable instead of reportbroken_retexitstatus.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/scandir.c (scandir): Handle case when filter and cmp
	function arguments are NULL.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/compat.h (scandir): Rename arguments from select to
	filter and compar to cmp.
	* libcompat/scandir.c (scandir): Likewise.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/compat.h (alphasort): Change argument types to match
	modern system ones (the current ones were missing one indirection
	anyway).
	* libcompat/alphasort.c (alphasort): Likewise. Properly dereference
	arguments.
	* libcompat/scandir.c (scandir_comparfn): Remove static function
	variable.
	(scandir_compar): Remove function.
	(scandir): Pass compar function directly to qsort.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/strerror.c (strerror): Change string for unknown value.
	* libcompat/strsignal.c (strsignal): Likewise.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/strsignal.c (strsignal): Do not return a string for
	signal 0.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/strsignal.c (sys_siglist): Insert a NULL entry at the
	beginning.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/strsignal.c (sys_siglist): Remove array size from
	declaration. Remove unknown signal names.
	(strsignal): Use sizeof to compute the array size instead of NSIG.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/vsnprintf.c (vsnprintf): Use SEEK_SET instead of a 0
	literal on fseek.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/vsnprintf.c (vsnprintf): Change size and nr types from
	unsigled long to size_t. Always return the amount that would be
	written regardless of any truncation. Do not read one byte less from
	the temporary file.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/vsnprintf.c (vsnprintf): Use the return value from
	vfprintf as the formatted string size instead of using fstat to get
	the file size.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/vsnprintf.c (vsnprintf): Check for negative return error
	values instead of just EOF.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/snprintf.c (snprintf): Use vsnprintf instead of vsprintf.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/vsnprintf.c (vsnprintf): Use '\0' instead of NULL to
	terminate the string.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/compat.h (unsetenv): Change return type from void to int.
	* libcompat/unsetenv.c (unsetenv): Likewise. Return -1 on error, or
	pass through the status code from putenv.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* dselect/methkeys.cc: Remove unused headers <stdio.h>, <string.h>,
	<assert.h> and <dpkg.h>.
	* dselect/pkgkeys.cc: Likewise.
	* dselect/basetop.cc: Likewise. Remove unused header <ctype.h>.
	* dselect/curkeys.cc: Remove unused header <dpkg.h>.
	* dselect/helpmsgs.h: Likewise.
	* dselect/pkgcmds.cc: Likewise.
	* dselect/pkgdisplay.cc: Likewise.
	* dselect/pkginfo.cc: Likewise.
	* lib/compression.c: Likewise.
	* lib/dpkg-db.h: Remove unused header <string.h>. Include
	<sys/types.h>.
	* lib/md5.c: Remove unused header <netinet/in.h>.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* src/main.c (commandfd): Remove left over debug printf.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (IMPORTANTFMT): Remove out of sync comment.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (standard_startup): Do not take prog, loadcfg and
	cmdinfos as arguments, and do not call loadcfgfile. Fix all callers.
	* src/main.c: Call loadcfgfile directly.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h: Do not include <myopt.h>.
	(standard_startup): Do not take argc and argv as arguments, and do
	not call myopt. Fix all callers.
	* lib/myopt-util.c: Include <myopt.h>.
	* dpkg-deb/build.c: Likewise.
	* dpkg-split/info.c: Likewise.
	* dpkg-split/join.c: Likewise.
	* dpkg-split/queue.c: Likewise.
	* src/select.c: Likewise.
	* dpkg-deb/main.c (main): Call myopt directly.
	* dpkg-split/main.c: Likewise.
	* src/main.c: Likewise.
	* src/query.c: Likewise.
	* src/trigcmd.c: Likewise.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (standard_shutdown): Remove unused freemem argument,
	and do not call nffreeall. Fix all callers.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-db.h: Move <stdlib.h> inclusion to ...
	* dselect/pkglist.cc: ... here.
	* lib/database.c: Likewise.
	* lib/dump.c: Likewise.
	* lib/parse.c: Likewise.
	* lib/parsehelp.c: Likewise.
	* lib/triglib.c: Likewise.
	* src/filesdb.c: Likewise.
	* src/help.c: Likewise.
	* src/select.c: Likewise.
	* src/trigproc.c: Likewise.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* configure.ac (AC_CHECK_FUNCS): Move 'vsnprintf', 'snprintf',
	'strerror', 'strsignal', 'scandir', 'alphasort' and 'unsetenv' to ...
	(DPKG_CHECK_COMPAT_FUNCS): ... here.
	* lib/Makefile.am (libdpkg_a_SOURCES): Remove 'compat.c'.
	* lib/dpkg.h (strerror, strsignal, scandir, alphasort, unsetenv)
	(offsetof, strtoul, va_copy, WCOREDUMP): Move declarations to ...
	* libcompat/compat.h: ... here.
	* libcompat/Makefile.am (libcompat_a_SOURCES): Add 'strerror.c',
	'strsignal.c', 'snprintf.c', 'vsnprintf.c', 'alphasort.c',
	'scandir.c' and 'unsetenv.c'.
	* po/POTFILES.in: Remove 'lib/compat.c'.
	* lib/compat.c: Split into ...
	* libcompat/alphasort.c: ... here. New file.
	* libcompat/scandir.c: Likewise.
	* libcompat/snprintf.c: Likewise.
	* libcompat/strerror.c: Likewise.
	* libcompat/strsignal.c: Likewise.
	* libcompat/unsetenv.c: Likewise.
	* libcompat/vsnprintf.c: Likewise.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* lib/compat.c: Do not include <dpkg.h> anymore.
	(vsnprintf): Return negative on error instead of ohshite.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* libcompat/compat.h: New file.
	* dpkg-deb/build.c: Include <compat.h>.
	* dpkg-deb/extract.c: Likewise.
	* dpkg-deb/info.c: Likewise.
	* dpkg-deb/main.c: Likewise.
	* dpkg-split/info.c: Likewise.
	* dpkg-split/join.c: Likewise.
	* dpkg-split/main.c: Likewise.
	* dpkg-split/queue.c: Likewise.
	* dpkg-split/split.c: Likewise.
	* dselect/basecmds.cc: Likewise.
	* dselect/baselist.cc: Likewise.
	* dselect/basetop.cc: Likewise.
	* dselect/bindings.cc: Likewise.
	* dselect/curkeys.cc: Likewise.
	* dselect/helpmsgs.cc: Likewise.
	* dselect/main.cc: Likewise.
	* dselect/methkeys.cc: Likewise.
	* dselect/methlist.cc: Likewise.
	* dselect/method.cc: Likewise.
	* dselect/methparse.cc: Likewise.
	* dselect/pkgcmds.cc: Likewise.
	* dselect/pkgdepcon.cc: Likewise.
	* dselect/pkgdisplay.cc: Likewise.
	* dselect/pkginfo.cc: Likewise.
	* dselect/pkgkeys.cc: Likewise.
	* dselect/pkglist.cc: Likewise.
	* dselect/pkgsublist.cc: Likewise.
	* dselect/pkgtop.cc: Likewise.
	* lib/cleanup.c: Likewise.
	* lib/compression.c: Likewise.
	* lib/database.c: Likewise.
	* lib/dbmodify.c: Likewise.
	* lib/dump.c: Likewise.
	* lib/ehandle.c: Likewise.
	* lib/lock.c: Likewise.
	* lib/log.c: Likewise.
	* lib/md5.c: Likewise.
	* lib/mlib.c: Likewise.
	* lib/myopt-util.c: Likewise.
	* lib/myopt.c: Likewise.
	* lib/nfmalloc.c: Likewise.
	* lib/parse.c: Likewise.
	* lib/parsehelp.c: Likewise.
	* lib/path.c: Likewise.
	* lib/showpkg.c: Likewise.
	* lib/string.c: Likewise.
	* lib/subproc.c: Likewise.
	* lib/triglib.c: Likewise.
	* lib/utils.c: Likewise.
	* lib/varbuf.c: Likewise.
	* lib/vercmp.c: Likewise.
	* src/archives.c: Likewise.
	* src/cleanup.c: Likewise.
	* src/configure.c: Likewise.
	* src/depcon.c: Likewise.
	* src/enquiry.c: Likewise.
	* src/errors.c: Likewise.
	* src/filesdb.c: Likewise.
	* src/help.c: Likewise.
	* src/main.c: Likewise.
	* src/packages.c: Likewise.
	* src/pkg-list.c: Likewise.
	* src/pkg-show.c: Likewise.
	* src/processarc.c: Likewise.
	* src/query.c: Likewise.
	* src/remove.c: Likewise.
	* src/select.c: Likewise.
	* src/trigcmd.c: Likewise.
	* src/trigproc.c: Likewise.
	* src/update.c: Likewise.
	* lib/fields.c: Likewise. Do not include "strnlen.h", now implicitly
	included by <compat.h>.
	* lib/tarfn.c: Likewise.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h: Move <locale.h> inclusion and standard_startup locale
	setup to ...
	* dpkg-deb/main.c (main): ... here.
	* dpkg-split/main.c (main): Likewise.
	* dselect/main.cc (main): Likewise.
	* src/main.c (main): Likewise.
	* src/query.c (main): Likewise.
	* src/trigcmd.c (main): Likewise.

2008-09-14  Guillem Jover  <guillem@debian.org>

	* lib/Makefile.am (libdpkg_a_SOURCES): Add 'dpkg-i18n.h'.
	* lib/dpkg.h: Move <gettext.h> inclusion and ...
	(_, N_): ... macros to ...
	* lib/dpkg-i18n.h: ... here. New file.
	* dpkg-deb/build.c: Include <dpkg-i18n.h>.
	* dpkg-deb/extract.c: Likewise.
	* dpkg-deb/info.c: Likewise.
	* dpkg-deb/main.c: Likewise.
	* dpkg-split/info.c: Likewise.
	* dpkg-split/join.c: Likewise.
	* dpkg-split/main.c: Likewise.
	* dpkg-split/queue.c: Likewise.
	* dpkg-split/split.c: Likewise.
	* dselect/basecmds.cc: Likewise.
	* dselect/baselist.cc: Likewise.
	* dselect/bindings.cc: Likewise.
	* dselect/helpmsgs.cc: Likewise.
	* dselect/main.cc: Likewise.
	* dselect/methlist.cc: Likewise.
	* dselect/method.cc: Likewise.
	* dselect/methparse.cc: Likewise.
	* dselect/pkgdisplay.cc: Likewise.
	* dselect/pkginfo.cc: Likewise.
	* dselect/pkglist.cc: Likewise.
	* dselect/pkgsublist.cc: Likewise.
	* dselect/pkgtop.cc: Likewise.
	* lib/compression.c: Likewise.
	* lib/database.c: Likewise.
	* lib/dbmodify.c: Likewise.
	* lib/dump.c: Likewise.
	* lib/ehandle.c: Likewise.
	* lib/fields.c: Likewise.
	* lib/lock.c: Likewise.
	* lib/log.c: Likewise.
	* lib/mlib.c: Likewise.
	* lib/myopt-util.c: Likewise.
	* lib/myopt.c: Likewise.
	* lib/nfmalloc.c: Likewise.
	* lib/parse.c: Likewise.
	* lib/parsehelp.c: Likewise.
	* lib/showpkg.c: Likewise.
	* lib/subproc.c: Likewise.
	* lib/trigdeferred.l: Likewise.
	* lib/triglib.c: Likewise.
	* lib/utils.c: Likewise.
	* src/archives.c: Likewise.
	* src/cleanup.c: Likewise.
	* src/configure.c: Likewise.
	* src/depcon.c: Likewise.
	* src/enquiry.c: Likewise.
	* src/errors.c: Likewise.
	* src/filesdb.c: Likewise.
	* src/help.c: Likewise.
	* src/main.c: Likewise.
	* src/packages.c: Likewise.
	* src/pkg-show.c: Likewise.
	* src/processarc.c: Likewise.
	* src/query.c: Likewise.
	* src/remove.c: Likewise.
	* src/select.c: Likewise.
	* src/trigcmd.c: Likewise.
	* src/trigproc.c: Likewise.
	* src/update.c: Likewise

2008-09-14  Guillem Jover  <guillem@debian.org>

	* dselect/baselist.cc (baselist::startdisplay): Unmark debug message
	for translation.
	* dselect/methlist.cc (methodlist::display): Likewise.
	* dselect/pkgdepcon.cc (packagelist::resolvedepcon): Likewise.
	* dselect/pkglist.cc (packagelist::addheading): Likewise.
	* dselect/pkgsublist.cc (packagelist::add): Likewise.

2009-02-03  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.25.

2009-02-02  Guillem Jover  <guillem@debian.org>

	* src/archives.c (tarobject): Do not call ensure_pathname_nonexisting
	for .dpkg-tmp and .dpkg-new if we are going to return due to already
	existing directory or a file to be skept.

2008-02-02  Raphaël Hertzog  <hertzog@debian.org>

	* dpkg-deb/build.c: Ensure that data.tar and control.tar
	archives created inside a .deb use the GNU format that is compatible
	with dpkg itself. And remove TAR_OPTIONS from environment to
	avoid unexpected user customizations of the resulting archives.

2008-12-29  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.25~.

2008-12-29  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.24.

2008-12-20  Guillem Jover  <guillem@debian.org>

	* src/archives.c (tarobject): Move a 'continue' inside a conditional
	checking if the conffile to take over was obsolete on the other
	package by adding missing bracese.

2008-12-01  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Archive.pm (extract): Do not create the temp
	directory in the current directory but in the parent directory of
	the target directory. Otherwise the code would fail when called
	from a non-writable dir and rename could fail due to filesystem
	boundaries beetwen the current dir and the target one.

2008-12-01  Modestas Vainius  <modestas@vainius.eu>

	* scripts/dpkg-shlibdeps.pl: Don't merge all dependency templates
	into the generated dependency when Build-Depends-Package is
	used in the symbols file. Instead simply modify the minimal
	version on any pre-existing dependency.

2008-11-19  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/Objdump.pm (parse_dynamic_symbol): Fix the
	regular expression to not require two space between alignment and
	symbol name.
	* scripts/t/200_Dpkg_Shlibs.t,
	scripts/t/200_Dpkg_Shlibs/objdump.ls: Add a non-regression test
	corresponding to the above case.

2008-11-18  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.24~.

2008-11-18  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.23.

2008-11-14  Guillem Jover  <guillem@debian.org>

	* lib/ehandle.c (run_error_handler): In case of onerr_abort print an
	error message and exit, otherwise longjmp.

2008-11-14  Guillem Jover  <guillem@debian.org>

	* src/main.h (abort_processing): New variable declaration.
	* src/errors.c (abort_processing): New variable definition.
	* src/archives.c (print_error_perpackage): Use abort_processing
	instead of onerr_abort for non fatal errors.
	(reportbroken_retexitstatus): Likewise. Do not check onerr_abort
	for the exit value as it should not have reached this function.
	* src/packages.c (process_queue): Likewise. Return on entering if
	it should abort processing.

2008-11-14  Guillem Jover  <guillem@debian.org>

	* lib/ehandle.c (run_error_handler): New function.
	(push_error_handler): Use run_error_handler instead of directly
	calling longjmp.
	(ohshit): Likewise.
	(ohshitvb): Likewise.
	(ohshitv): Likewise.
	(ohshite): Likewise.

2008-11-07  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Version.pm: Synchronize code with version used by
	debbugs (add some bugfixes).
	* scripts/t/900_Dpkg_Version.t: Add non-regression tests for
	version comparison code.
	* scripts/Makefile.am: Add new file in the dist tarball.

2008-10-20  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm (load): Let the recursively
	nested calls to load() modify the name of the current object so
	that the header can be set in an included file (like it's already
	documented).

2008-09-26  Thiemo Seufer  <ths@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm: add "__gnu_local_gp" symbol
	  to the blacklist (mips/mipsel specific symbol that appeared with
	  GCC 4.3).

2008-09-05  Raphaël Hertzog  <hertzog@debian.org>

	* configure.ac: Bump version to 1.14.23~.

2008-09-05  Raphaël Hertzog  <hertzog@debian.org>

	* configure.ac: Release 1.14.22.

2008-08-29  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-gensymbols.pl: It was already skipping symlinks
	within the package build tree. Now it also skips real
	directories accessed through a symlink contained in the package
	build tree. Package like libc6-386 had symlinks usr/lib32
	pointing to some directories outside of the build tree and
	the LD_LIBRARY_PATH set by fakeroot led contained
	/usr/lib32/libfakeroot which made dpkg-gensymbols scan this
	directory and add libfakeroot to the libc6-386 symbols file!

2008-08-29  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V3/quilt.pm: run_quilt() can be run
	when no quilt series file exist yet. In that case we have to
	provide the name of the series file that we want to create (as the
	quilt command might create it). Up to now
	File::Spec->rel2abs(undef) returned the name of the current
	directory and we improperly used that as value of QUILT_SERIES.
	* scripts/Dpkg/Source/Package/V2.pm (do_build): Change permissions
	of the automatically generated patch which is initially created
	0600 with tempfile().

2008-08-26  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.22~.

2008-08-26  Guillem Jover  <guillem@debian.org>

	* lib/gettext.h: Move to ..
	* libcompat/gettext.h: ... here.
	* lib/Makefile.am (libdpkg_a_SOURCES): Remove 'gettext.h'.
	* libcompat/Makefile.am (libcompat_a_SOURCES): Add 'gettext.h'

2008-08-24  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-priv.h [HAVE_STDDEF_H]: Conditionalize <stddef.h> inclusion.

2008-08-24  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-def.h (DPKG_BEGIN_DECLS, DPKG_END_DECLS): New macros.
	* lib/dpkg.h: Surround declarations with DPKG_BEGIN_DECLS and
	DPKG_END_DECLS.
	* lib/myopt.h: Likewise.
	* lib/dpkg-db.h: Likewise. Include <dpkg-def.h>.
	* lib/dpkg-priv.h: Include <dpkg-def.h>. Replace extern "C" context
	with DPKG_BEGIN_DECLS and DPKG_END_DECLS.
	* dselect/basecmds.cc: Remove surrounding extern "C" context from
	header files.
	* dselect/baselist.cc: Likewise.
	* dselect/basetop.cc: Likewise.
	* dselect/bindings.cc: Likewise.
	* dselect/curkeys.cc: Likewise.
	* dselect/helpmsgs.h: Likewise.
	* dselect/main.cc: Likewise.
	* dselect/methkeys.cc: Likewise.
	* dselect/methlist.cc: Likewise.
	* dselect/method.cc: Likewise.
	* dselect/methparse.cc: Likewise.
	* dselect/pkgcmds.cc: Likewise.
	* dselect/pkgdepcon.cc: Likewise.
	* dselect/pkgdisplay.cc: Likewise.
	* dselect/pkginfo.cc: Likewise.
	* dselect/pkgkeys.cc: Likewise.
	* dselect/pkglist.cc: Likewise.
	* dselect/pkgsublist.cc: Likewise.
	* dselect/pkgtop.cc: Likewise.

2008-08-24  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-def.h: Do not include <config.h>.
	* dselect/helpmsgs.h: Likewise.
	* dselect/helpmsgs.cc: Include <config.h>.
	* lib/cleanup.c: Likewise.
	* lib/md5.c: Include <config.h> instead of "config.h".
	* lib/mlib.c: Likewise.
	* utils/start-stop-daemon.c: Likewise.

2008-08-22  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-source.1: Clarify two points concerning the behaviour
	of the new 3.0 (quilt) source format.

2008-08-18  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (ARCHBINFMT): Remove unused macro.

2008-08-18  Guillem Jover  <guillem@debian.org>

	* src/query.c: Remove left-over description from header comment.
	* src/remove.c: Remove partial change log from header comment.

2008-08-18  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (CMETHOPTFILE, METHLOCKFILE, METHODSDIR)
	(IMETHODMAXLEN, IOPTIONMAXLEN, METHODOPTIONSFILE)
	(METHODSETUPSCRIPT, METHODUPDATESCRIPT, METHODINSTALLSCRIPT)
	(OPTIONSDESCPFX, OPTIONINDEXMAXLEN): Move macros ...
	* dselect/method.h: ... here.
	* dselect/methparse.cc: Include "method.h".

2008-08-18  Guillem Jover  <guillem@debian.org>

	* man/dpkg-trigger.1: Mark program names in bold.

2008-08-18  Guillem Jover  <guillem@debian.org>

	* man/cleanup-info.8: Use a troff special character for the copyright
	symbol.
	* man/deb-substvars.5: Likewise.
	* man/deb-version.5: Likewise.
	* man/dpkg-buildpackage.1: Likewise.
	* man/dpkg-checkbuilddeps.1: Likewise.
	* man/dpkg-deb.1: Likewise.
	* man/dpkg-distaddfile.1: Likewise.
	* man/dpkg-divert.8: Likewise.
	* man/dpkg-genchanges.1: Likewise.
	* man/dpkg-gencontrol.1: Likewise.
	* man/dpkg-gensymbols.1: Likewise.
	* man/dpkg-name.1: Likewise.
	* man/dpkg-parsechangelog.1: Likewise.
	* man/dpkg-query.1: Likewise.
	* man/dpkg-shlibdeps.1: Likewise.
	* man/dpkg-source.1: Likewise.
	* man/dpkg-split.1: Likewise.
	* man/dpkg-statoverride.8: Likewise.
	* man/install-info.8: Likewise.
	* man/update-alternatives.8: Likewise.

2008-08-15  Guillem Jover  <guillem@debian.org>

	* man/dpkg-deb.1 (BUGS): Improve comment about missing authentication
	and checksum support in .deb files.

2008-08-05  Guillem Jover  <guillem@debian.org>

	* lib/ehandle.c: Include <dpkg-priv.h>.
	(push_cleanup): Use sizeof_array instead of ad-hoc calculation.

2008-08-05  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-scanpackages.pl: Use usageerr instead of embedded code.

2008-08-05  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-distaddfile.pl: Use _g() instead of wrong and typoed
	gettetx().

2008-08-03  Guillem Jover  <guillem@debian.org>

	* src/processarc.c (process_archive): Use blankpackageperfile instead
	of manually blanking the members.
	* src/remove.c (removal_bulk): Likewise.

2008-08-03  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (pid_is_running) [!OSHURD]: Reimplement
	using kill instead of less-portable /proc.

2008-08-03  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (check) [HAVE_KVM_H]: Call pid_is_exec.

2008-08-03  Guillem Jover  <guillem@debian.org>

	* src/pkg-show.c (limiteddescription): Assign directly to l_r instead
	of a temporary variable.

2008-08-03  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c: Move the different implementations
	of the same function for different operating systems together.

2008-08-03  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (MIN_POLL_INTERVAL): Use proper UTF-8 mu
	symbol for the unit in the comment.

2008-07-26  Guillem Jover  <guillem@debian.org>

	* src/Makefile.am (dpkg_SOURCES): Add 'pkg-show.c'.
	(dpkg_query_SOURCES): Likewise.
	* src/main.h (limiteddescription): New function prototype.
	* src/enquiry.c (limiteddescription): Move function to ...
	* src/pkg-show.c: ... here. New file.
	* src/query.c (limiteddescription): Remove duplicate function.

2008-07-26  Guillem Jover  <guillem@debian.org>

	* lib/showpkg.c (parseformat): Do not set cur->type to field, as
	that's set in parsefield.

2008-07-22  Guillem Jover  <guillem@debian.org>

	* src/Makefile.am (dpkg_SOURCES): Add 'pkg-list.c'.
	(dpkg_query_SOURCES): Likewise.
	* src/enquiry.c (pkglistqsortcmp): Move function to ...
	* src/pkg-list.c: ... here. New file.
	* src/query.c (pkglistqsortcmp): Remove duplicate function.

2008-07-22  Guillem Jover  <guillem@debian.org>

	* src/main.h (struct pkg_deconf_list): Move declaration ...
	* src/archives.h: ... here.

2008-07-22  Guillem Jover  <guillem@debian.org>

	* src/main.h (struct packageinlist): Rename to ...
	(struct pkg_deconf_list): ... this. Fix all users.

2008-07-22  Guillem Jover  <guillem@debian.org>

	* src/main.h (struct packageinlist): Change 'void *xinfo' member to
	'struct pkginfo *pkg_removal'. Fix all users.

2008-07-22  Guillem Jover  <guillem@debian.org>

	* src/main.h (ignoredependss): Change type to 'struct pkginqueue'.
	* src/main.c (ignoredependss): Likewise.
	(ignoredepends): Change type for variable 'ni' to 'struct pkginqueue'.
	* src/help.c (ignore_depends): Likewise.

2008-07-22  Guillem Jover  <guillem@debian.org>

	* src/query.c (ignoredependss): Remove unused variable.

2008-07-10  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-buildpackage.1: Give a detailed explanation of what the
	command does. Drop any duplicate information contained in the
	dpkg-genchanges/dpkg-source manual pages.
	* man/dpkg-genchanges.1: Document the -A option (was missing).

2008-07-10  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-priv.h (min, max): New macros.
	* lib/tarfn.c: Include <dpkg-priv.h>.
	* src/configure.c: Likewise.
	* src/enquiry.c: Likewise.

	* src/configure.c (conffderef): Use max instead of hardcoded test.
	* lib/tarfn.c (TarExtractor): Use min instead of hardcoded test.
	* lib/fields.c (conffvalue_lastword): Likewise.
	* src/enquiry.c (limiteddescription): Likewise.
	* src/main.c (setforce): Likewise.
	* src/query.c (limiteddescription): Likewise.

2008-07-10  Guillem Jover  <guillem@debian.org>,
            Timothy G Abbott  <tabbott@mega-man.mit.edu>

	* src/configure.c (deferred_configure): Call namenodetouse to handle
	diverted conffiles. Use trig_file_activate on usenode, instead of
	trig_file_activate_byname, to activate the correct file trigger for
	the diverted conffile.

2008-07-06  Guillem Jover  <guillem@debian.org>

	* src/main.h: Remove comment about side effect in namenodetouse.
	* src/help.c (namenodetouse): Move call to trig_file_activate to ...
	* src/archives.c (tarobject): ... here.
	* src/processarc.c (process_archive): Likewise.
	* src/remove.c (removal_bulk_remove_files): Likewise.
	(removal_bulk_remove_leftover_dirs): Likewise.

2008-07-06  Michel Lespinasse  <walken@zoy.org>

	* dselect/baselist.cc (baselist::startdisplay): Create the
	pad with the list of the size of the display and not of the
	size of the list content itself.
	* dselect/basetop.cc (baselist::refreshlist): The part to
	display is always at the top of the pad.
	(baselist::redrawitemsrange): Simplified to redraw the real
	range only.
	* dselect/pkglist.cc (packagelist::sortmakeheads): No need to reallocate
	the pad when the list changes.
	* dselect/pkgtop.cc (packagelist::redraw1itemsel): The line
	of the item in the infopad doesn't correspond to its index in
	the list any more. Adjust accordingly.

2008-07-05  Guillem Jover  <guillem@debian.org>

	* src/archives.c (filesavespackage): Do not mark debug message for
	translation.

2008-07-04  Raphaël Hertzog  <hertzog@debian.org>
            Bruce Sass <bmsass@shaw.ca>

	* dselect/pkginfo.cc (packagelist::itd_description), dselect/pkgtop.cc
	(packagelist::redraw1itemsel): Use description of installed
	package as a fallback if the package is not more listed in the
	available list.

2008-07-02  Guillem Jover  <guillem@debian.org>

	* lib/fields.c (convert_string): Remove unneeded variable assignments.
	Get rid this way of an int variable.

2008-07-02  Guillem Jover  <guillem@debian.org>

	* lib/fields.c (convert_string): Change nvip to be const and use a
	proper assignment instead of a sneaky cast through memcpy. Remove
	unneeded length caching as all current namevalue arrays have it
	precomputed.

2008-07-02  Guillem Jover  <guillem@debian.org>

	* lib/fields.c (convert_string): Use a capped string length instead
	of using last namevalue length member when printing the disallowed
	value.

2008-07-02  Guillem Jover  <guillem@debian.org>

	* src/query.c (limiteddescription): Use NULL instead of 0.
	(list1package, searchfiles, enqperpackage, main): Likewise.
	(cipaction, ignoredependss, cmdinfos): Likewise.
	(ACTION, OBSOLETE): Likewise.
	* src/select.c (setselections): Likewise.
	* src/trigcmd.c (cmdinfos): Likewise.

2008-07-02  Guillem Jover  <guillem@debian.org>

	* src/remove.c (removal_bulk_remove_configfiles): Remove wrong comment
	not matching the code.

2008-07-02  Guillem Jover  <guillem@debian.org>

	* src/archives.c (tarfile_skip_one_forward): Make static.

2008-07-02  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-priv.h: Include <stddef.h>.
	* lib/string.c: Include <config.h> and <dpkg-priv.h>.

2008-07-02  Guillem Jover  <guillem@debian.org>

	* dselect/Makefile.am (curkeys.h): Use '$(CPP)' instead of '$(CC) -E'.

2008-07-01  Guillem Jover  <guillem@debian.org>

	* src/depcon.c (findbreakcyclerecursive): Use the debug function
	instead of reimplementing its logic.
	* src/help.c (preexecscript): Likewise.

2008-07-01  Egmont Koblinger  <egmont@uhulinux.hu>

	* src/processarc.c (process_archive): Properly lstat the correct
	file on upgrade when using --root.

2008-07-01  Guillem Jover  <guillem@debian.org>

	* src/processarc.c (process_archive): Do not allocate a struct stat
	when lstat fails, instead assign a pointer to a static empty stat
	variable that will mark it as such.

2008-06-30  Guillem Jover  <guillem@debian.org>

	* lib/showpkg.c (parsefield): Remove unneeded 'const char *' cast.

2008-06-30  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-db.h (struct arbitraryfield): Make all 'char *' members
	'const'.
	(struct filedetails): Likewise.
	(struct pkginfoperfile): Likewise.
	(struct trigpend): Likewise.

	* lib/parse.c (parsedb): Remove now unneeded 'const char **' casts.
	* src/processarc.c (process_archive): Change size variable before
	assigning the pointer.

2008-06-30  Guillem Jover  <guillem@debian.org>

	* dselect/baselist.cc (baselist::wordwrapinfo): Surround expression
	with parenthesis.
	* dselect/pkgcmds.cc (packagelist::affectedmatches): Likewise.
	(packagelist::affectedrange): Switch a for with an empty body into a
	while.
	* dselect/basecmds.cc (baselist::displayhelp): Likewise.
	* dselect/bindings.cc (keybindings::bind, keybindings::find)
	(keybindings::operator(), keybindings::key2name)
	(keybindings::name2key): Likewise.
	* dselect/main.cc (urq_menu, main): Likewise.
	* dselect/methparse.cc (readmethods, getcurrentopt): Likewise.
	* dselect/pkgdepcon.cc (packagelist::resolvedepcon): Likewise.
	* dselect/pkgsublist.cc (packagelist::alreadydone): Likewise.

2008-06-30  Guillem Jover  <guillem@debian.org>

	* lib/trigdeferred.l: Define YY_NO_INPUT to make flex not include
	the unused input() in the resulting object.

2008-06-29  Guillem Jover  <guillem@debian.org>

	* lib/parsedump.h (parseerr, parsemustfield): Remove prototypes.
	(parse_error, parse_warn): New prototypes.
	(parse_must_have_field, parse_ensure_have_field): Likewise.
	* lib/parsehelp.c (parseerr): Split into ...
	(parse_error_msg, parse_error, parse_warn): ... these. New functions.
	Fix all callers.
	(parsemustfield): Split into ...
	(parse_must_have_field, parse_ensure_have_field): ... there. New
	functions. Fix all callers.
	* lib/fields.c (convert_string): Remove now unused warning related
	arguments. Fix all callers.
	(conffvalue_lastword): Likewise.

2008-06-29  Guillem Jover  <guillem@debian.org>

	* lib/Makefile.am (libdpkg_a_SOURCES): Add 'string.c'.
	* lib/dpkg-priv.h (str_escape_fmt): New prototype.
	* lib/parsehelp.c: Include <dpkg-priv.h>.
	(parseerr): Refactor string format escaping to ,,,
	* lib/string.c (str_escape_fmt): ... here. New file.

2008-06-28  Guillem Jover  <guillem@debian.org>

	* lib/parsedump.h (parseerr, parsemustfield): Remove unused 'file'
	argument. Fix all callers.
	* lib/parsehelp.c (parseerr): Remove checks on 'file'.

2008-06-28  Tollef Fog Heen  <tfheen@err.no>

	* src/archives.c (tarobject): Refactor tarfile object skipping to ...
	(tarfile_skip_one_forward): ... here. New function.

2008-06-28  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-db.h (skip_slash_dotslash): Move declaration ...
	* lib/dpkg-priv.h: ... here.
	* lib/parsehelp.c (skip_slash_dotslash): Move definition ...
	* lib/path.c: ... here.
	* lib/fields.c: Include <dpkg-priv.h>.
	* src/filesdb.c: Likewise.

2008-06-28  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (onerr_abort): Move declaration to the ehandle.c section.
	* lib/mlib.c (onerr_abort): Move definition ...
	* lib/ehandle.c: ... here.

2008-06-28  Guillem Jover  <guillem@debian.org>

	* lib/mlib.c (checksubprocerr): Move the PROCNOERR check before
	the reporting, and exit directly instead in case of error.

2008-06-28  Guillem Jover  <guillem@debian.org>

	* lib/ehandle.c (badusage): Use ohshit instead of its own error
	handling.

2008-06-28  Guillem Jover  <guillem@debian.org>

	* src/query.c (printforhelp): Remove trailing newlines.

2008-06-27  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (do_build): Move string translation markers outside
	of the string.
	* src/help.c (ensure_pathname_nonexisting): Localize the 'failed'
	variable instead of expecting gettext to magically infer the formatted
	string.
	* src/processarc.c (process_archive): Likewise.

2008-06-27  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/install-info.pl: Improve error message when the
	info file doesn't exist.

2008-06-27  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-query.1: Document the origin of the various fields and
	warn that they are not always available.

2008-06-23  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-source.pl: New option --require-valid-signature.
	* scripts/Dpkg/Source/Package.pm (check_signature): Updated to use
	Dpkg::IPC and to implement the checks related to
	--require-valid-signature.
	* man/dpkg-source.1: Document the new option.

2008-06-23  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/IPC.pm (fork_and_exec): New nocheck option that is
	forwarded to wait_child().

2008-06-23  Timothy G Abbott  <tabbott@MIT.EDU>

	* scripts/dpkg-divert.pl: Add new option --listpackage to
	dpkg-divert.
	* man/dpkg-divert.1: Document new option.

2008-06-22  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg.1, man/dpkg-query.1: Document the fact that the available
	file is mostly useful for dselect users and that the related commands
	are useless for APT users.

2008-06-22  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-buildpackage.1: Document -A option.

2008-06-22  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg.1, man/dpkg-query.1: Clarify lisf of packages displayed
	in dpkg --get-selections and dpkg-query -l.

2008-06-21  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: If the binary analyzed is a library on a
	non-public path, assume it's likely a plugin and reduce the number of
	warnings displayed about symbols not found. Also use a different,
	hopefully less confusing message.
	* man/dpkg-shlibdeps.1: Document the above changes.

2008-06-21  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Vendor.pm: Provide simple parser for vendor-specific
	information stored in /etc/dpkg/origins/. The current vendor can
	be identified through get_current_vendor() and get_vendor_info()
	retrieves the information stores within those files.
	* scripts/dpkg-buildpackage.pl: Setup the DEB_VENDOR environment
	variable if possible.
	* man/dpkg-buildpackage.1: Document the above changes.
	* scripts/Dpkg/Source/Package/V3/quilt.pm (get_series_file): Use
	get_current_vendor() to decide the name of the vendor-specific
	series file that should be used.
	* scripts/Makefile.am, scripts/po/POTFILES.in: Include the new
	module in the dist tarball and in the list of files containing
	translatable strings.

2008-06-19  Guillem Jover  <guillem@debian.org>

	* lib/varbuf.c (varbufdupc): Store the old used size instead of the
	precomputed address, as varbufextend might change the buffer from
	under us.

2008-06-17  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-divert.pl: Do not silently force --rename on --remove.

2008-06-17  Juergen Kreileder  <jk@blackdown.de>,
            Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-divert.pl (rename_mv): New function.
	(dorename): Use rename_mv instead of rename.

2008-06-10  Guillem Jover  <guillem@debian.org>

	* lib/varbuf.c (varbufvprintf): Call va_end when done with the va_list
	variable from va_copy.

2008-06-10  Guillem Jover  <guillem@debian.org>

	* lib/varbuf.c (varbufprintf): Use varbufvprintf instead of
	reimplementing it.

2008-06-09  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/BuildOptions.pm (parse, set): Use space as the
	official separator in DEB_BUILD_OPTIONS. Check for validity of
	flags and print a warning if a bad option is detected. Rewrote
	the logic of set() to avoid adding options twice in non-overwrite
	mode.
	* scripts/t/300_Dpkg_BuildOptions.t: Adjust the test suite
	accordingly.

2008-06-09  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Source/Package.pm ($diff_ignore_default_regexp): Add
	'.hgignore'.
	(@tar_ignore_default_pattern): Likewise.

2008-06-09  Guillem Jover  <guillem@debian.org>

	* src/query.c (searchfiles): Use VARBUF_INIT to initialize path
	instead of vb.

2008-06-04  Guillem Jover  <guillem@debian.org>

	* src/main.c (setpipe): Set file descriptors to close on exec.

2008-06-04  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (getfi): Use m_realloc instead of realloc.
	* dpkg-deb/info.c (info_spew): Likewise.
	* lib/fields.c (f_dependency): Likewise.
	* lib/parse.c (parsedb): Likewise.
	* lib/varbuf.c (varbufextend): Likewise.
	* src/main.c (commandfd): Likewise.

2008-06-04  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-db.h (varbufinit): Add a size argument, fix all callers.
	(varbuf::init): Add an optional size argument.
	(varbuf::varbuf): Likewise.
	* lib/varbuf.c (varbufinit): Allocate a buffer if size is not zero.
	* lib/dbmodify.c (modstatdb_init): Use varbufinit instead of its
	own initialization.

2008-06-04  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-db.h (VARBUF_INIT): New macro.
	* lib/compression.c (decompress_cat, compress_cat): Use VARBUF_INIT
	instead of varbufinit to initialize the variables.
	* lib/dump.c (writerecord, writedb): Likewise.
	* lib/mlib.c (buffer_copy_setup_dual): Likewise.
	* lib/showpkg.c (show1package): Likewise.
	* src/archives.c (check_breaks, check_conflict): Likewise.
	* src/configure.c (deferred_configure): Likewise.
	* src/depcon.c (describedepcon): Likewise.
	* src/main.c (commandfd): Likewise.
	* src/packages.c (breaks_check_one, dependencies_ok): Likewise.
	* src/query.c (searchfiles): Likewise.
	* src/remove.c (deferred_remove): Likewise.
	* src/select.c (setselections): Likewise.

2008-06-04  Guillem Jover  <guillem@debian.org>

	* src/archives.c (archivefiles): Use varbufreset instead of varbufinit
	to avoid possible leaks if this function is called more than once.

2008-06-04  Guillem Jover  <guillem@debian.org>

	* lib/log.c (log_message): Switch log from a pointer to struct varbuf
	to just struct varbuf.

2008-06-04  Guillem Jover  <guillem@debian.org>

	* src/main.c (setpipe): Fix the setting of more than one pipef.

2008-06-04  Guillem Jover  <guillem@debian.org>

	* src/select.c (setselections): Free varbuf variables.

2008-06-04  Guillem Jover  <guillem@debian.org>

	* lib/subproc.c (catch_signals): Remove array sentinel.

2008-06-01  Guillem Jover  <guillem@debian.org>

	* lib/varbuf.c (varbufdupc): Use memset instead of ad-hoc operation.

2008-06-01  Guillem Jover  <guillem@debian.org>

	* lib/subproc.c (setup_subproc_signals): Use size_t intead of int
	for the index, to fix a warning.
	(cu_subproc_signals): Likewise.

2008-06-01  Guillem Jover  <guillem@debian.org>

	* src/query.c (searchfiles): Use strpbrk instead of strcspn and
	strlen.

2008-06-01  Guillem Jover  <guillem@debian.org>

	* src/query.c: Include <dpkg-priv.h>.
	(searchfiles): Trim trailing '/' and '/.' from file searches only
	on path names, but not patterns.

2008-06-01  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-priv.h (rtrim_slash_slashdot): Return the string size.

2008-06-01  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Control.pm (parse, parse_fh, new): Add a new function
	parse_fh() to be able to parse the control file from an arbitrary
	file handle. Change parse() to use it and modify new() to parse
	STDIN instead of a real file if the parameter is "-".

2008-06-01  Daniel Hahler  <debian-bugs@thequod.de>

	* src/archives.c (tarobject): Improve error message stating that
	dpkg is unable to create a file so that it also refers to the real
	filename instead of the non-diverted name only.

2008-05-31  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg.1: Use the term conffile for a configuration file handled
	by dpkg. Drop reference to hamm. Updated description of values
	supported by -D to include those which are trigger related.

2008-05-29  Colin Watson  <cjwatson@debian.org>

	* lib/dbmodify.c (modstatdb_note): Add a comment around obscure bits
	of trigger handling code.
	* src/trigproc.c (trigproc): Likewise.

2008-05-29  Colin Watson  <cjwatson@debian.org>

	* lib/triglib.c (trig_incorporate): Fix typo in comment.

2008-05-24  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (do_build): Move argument name into a parameter to
	coalesce similar strings for translation.
	* dpkg-split/info.c (do_info): Likewise.
	* dpkg-split/join.c (do_join): Likewise.
	* dpkg-split/queue.c (do_queue): Likewise.
	* src/enquiry.c (audit, unpackchk, assertversion, predeppackage)
	(printarch): Likewise.
	* src/select.c (setselections, clearselections): Likewise.

2008-05-24  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/main.c: Include <dpkg-priv.h>.
	(setaction): Use sizeof_array instead of ad-hoc calculation.
	* dpkg-split/main.c: Include <dpkg-priv.h>.
	(setaction): Use sizeof_array instead of ad-hoc calculation.

2008-05-24  Guillem Jover  <guillem@debian.org>

	* src/trigcmd.c (main): Remove duplicate program name from badusage.

2008-05-19  Martin Koeppe  <mkoeppe@gmx.de>,
            Guillem Jover  <guillem@debian.org>

	* dpkg-deb/Makefile.am (dpkg_deb_LDADD): Move 'libcompat.a' and
	'$(LIBINTL)' after 'libdpkg.a'.
	* dpkg-split/Makefile.am (dpkg_split_LDADD): Likewise.
	* dselect/Makefile.am (dselect_LDADD): Likewise.
	* /src/Makefile.am (dpkg_LDADD): Likewise.
	(dpkg_query_LDADD): Likewise.
	(dpkg_trigger_LDADD): Likewise.

2008-05-19  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Source/Package.pm ($diff_ignore_default_regexp): Add
	'.be'.
	(@tar_ignore_default_pattern): Likewise.

2008-05-12  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gencontrol.pl ($package_type): Rename to ...
	($pkg_type): ... this, for uniformity.

2008-05-12  Guillem Jover  <guillem@debian.org>

	* src/help.c (do_script): Expand 'maint' to 'maintainer' in string.
	(vmaintainer_script_installed): Mark string for translation. Change
	strings so that they get merged by gettext with similar ones.
	(maintainer_script_new): Likewise.

2008-05-12  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-priv.h (sizeof_array): New macro.
	* lib/parse.c: Include <dpkg-priv.h>.
	(NFIELDS): Remove macro.
	(nfields): Use sizeof_array instead of NFIELDS.
	(parsedb): Likewise.
	* lib/subproc.c (NCATCHSIGNALS): Remove macro.
	(uncatch_signals): Use sizeof_array instead of NCATCHSIGNALS.
	(setup_subproc_signals): Likewise.
	(cu_subproc_signals): Likewise.

2008-05-12  Guillem Jover  <guillem@debian.org>

	* dselect/method.cc: Include <dpkg-priv.h>. Use setup_subproc_signals
	and cu_subproc_signals instead of cu_restoresignals and duped code
	in falliblesubprocess.
	* lib/Makefile.am (libdpkg_a_SOURCES): Add 'subproc.c'.
	* ib/dpkg-priv.h (setup_subproc_signals): New prototype.
	(cu_subproc_signals): Likewise.
	* src/help.c: Include <dpkg-priv.h> and stop including <signal.h>.
	(cu_restorescriptsignals, script_catchsignals): Move to ...
	* lib/subproc.c (cu_subproc_signals, setup_subproc_signals): ... here.
	New file.

2008-05-12  Guillem Jover  <guillem@debian.org>

	* lib/Makefile.am (libdpkg_a_SOURCES): Add 'dpkg-priv.h' and 'path.c'.
	* lib/dpkg-priv.h: New file.
	* lib/path.c: Likewise.

2008-05-11  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-source.1: Properly escape hyphen in -i option.

2008-05-11  Pierre Habouzit  <madcoder@debian.org>

	* lib/showpkg.c (show1package): Use %zd instead of %d in sprintf()
	call with a size_t parameter.

2008-05-11  Pierre Habouzit  <madcoder@debian.org>

	* scripts/update-alternatives.pl: Add a --query option that works
	like --display but outputs a machine parseable rfc822-like output.
	* man/update-alternatives.8: Document that new option, and the
	associated format.

2008-05-05  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-source.1: Improve explanation of -i when used with
	VCS-based source packages.

2008-05-05  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-gensymbols.pl: Do not accept empty parameters for
	-v,  -P and -e.

2008-05-05  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: Include the format of the desired
	library in the "library not found" error message.

2008-05-02  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Do not suggest manually changing
	the alternative symlinks on verbose mode.

2008-04-29  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.15.0~.

2008-08-26  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.21.

2008-08-26  Guillem Jover  <guillem@debian.org>

	* man/dpkg.1: Escape hyphen in apt-get command.

2008-08-17  Guillem Jover  <guillem@debian.org>

	* man/dpkg.1: Change reference to dselect as being the preferred
	fron-end to aptitude. And 'apt-get dselect-upgrade' to be used to
	act on the current package selections. Add references to aptitude
	and apt man pages in 'SEE ALSO'.

2008-08-16  Guillem Jover  <guillem@debian.org>

	* src/main.c (setpipe): Set file descriptors to close on exec.

2008-08-15  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-buildpackage.pl (usage): Fix description of -si option.
	* man/dpkg-buildpackage.1: Match description of -si option with the
	one from dpkg-genchanges.1.

2008-08-15  Raphaël Hertzog  <hertzog@debian.org>

	* Dpkg/Source/Package.pm (new): Call init_options() only if
	initialize() has been called as it's supposed to be called
	only after the object has been upgraded to its target type.
	(init_options): add a comment that explains that this function is
	not called by Dpkg::Source::Package::V1::init_options() and
	render the function more robust.

2008-08-15  Ian Jackson  <ian@davenant.greenend.org.uk>

	* src/packages.c (process_queue): When onerr_abort is bigger than 0
	return instead of breaking out of the loop, to avoid wrongly
	asserting that !queue.length.

2008-08-15  Guillem Jover  <guillem@debian.org>

	* lib/dbmodify.c (modstatdb_note): Do not call modstatdb_note_core if
	cstatus does not allow writting. Move the core functionallity to ...
	(modstatdb_note_core): ... here. New function.
	* src/help.c (post_postinst_tasks_core): Do not call trig_incorporate
	if running under --no-act.
	* src/trigproc.c (trigproc): Do not call maintainer_script_postinst
	if running under --no-act.
	(trig_transitional_activate): Do not call trig_file_interests_save
	if cstatus does not allow writting.

2008-08-15  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-db.h (trig_enqueue_awaited_pend): New function prototype.
	(trig_fixup_awaiters): Likewise.
	* lib/dbmodify.c (modstatdb_init): Call trig_fixup_awaiters.
	* lib/fields.c (f_trigaw): Call trig_enqueue_awaited_pend.
	* lib/triglib.c (struct pkg_list): New type.
	(trig_awaited_pend_head): New variable.
	(trig_enqueue_awaited_pend): New function definition.
	(trig_fixup_awaiters): Likewise.

2008-06-24  Raphaël Hertzog  <hertzog@debian.org>

	* debian/archtable: Add armel.

2008-06-21  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-buildpackage.pl, scripts/dpkg-genchanges.pl: Treat
	debian.tar.gz files (used by 3.0 (quilt) source packages) like
	diff.gz files when it comes to detection of the kind of upload.

2008-06-21  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V3/quilt.pm: Define QUILT_SERIES
	when running quilt in order to be able to use quilt series with
	non-standard names (like debian.series or ubuntu.series).

2008-06-18  Raphaël Hertzog  <hertzog@debian.org>

	* configure.ac: Bump version to 1.14.21~.

2008-06-18  Raphaël Hertzog  <hertzog@debian.org>

	* configure.ac: Release 1.14.20.

2008-06-16  Guillem Jover  <guillem@debian.org>

	* lib/triglib.c (trig_file_interests_ensure): Pass the proper mask
	to push_cleanup to make sure pop_cleanup closes the file.

2008-06-15  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-divert.pl (checkrename): Do not check the target file
	if the source does not exist and dorename was thus disabled.

2008-06-09  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-divert.pl, scripts/update-alternatives.pl,
	scripts/install-info.pl, scripts/dpkg-statoverride.pl: Set
	PERL_DL_NONLAZY to 1 so that the usage of Locale::Gettext doesn't
	cause run-time failures when this perl binary module is not
	compiled for the corresponding perl version (and this happens in
	configuration scripts, in particular preinst, during upgrades).

2008-06-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Patch.pm (analyze): Be less strict in
	filenames accepted on ---/+++ lines. Don't blow up on absolute
	filenames if the other one is fine. Make sure to use the one that
	is relative and that corresponds to a real file when possible.

2008-06-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V3/quilt.pm: Use absolute path names
	when giving directories and filenames to quilt to avoid any
	problems due to quilt's feature of trying relative paths in parent
	directories too.

2008-06-07  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Patch.pm (analyze): Accept unexpected
	end-of-file in patches if we're missing no more than 2 lines
	of context. Output a warning instead.

2008-06-07  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V3/quilt.pm (register_autopatch):
	Register the newly created patch with quilt only if quilt has
	already been used to apply the existing patches (or if we don't
	have any patch yet), otherwise register it manually at the end of
	the series.

2008-06-05  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Patch.pm (add_diff_directory): If option
	use_dev_null is set, then the label of the "old" file will be
	'/dev/null' if we're creating a new file (instead of using the
	name of the created file, like it's currently done in .diff
	of version "1.0" source packages).
	* scripts/Dpkg/Source/Package/V2.pm (prepare_build): Use the new
	option "use_dev_null" when creating the automatic patch.

2008-06-05  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V3/quilt.pm (get_patches): Really
	skip all comments in the series files.

2008-06-04  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Patch.pm (analyze): Enhance function to
	parse correctly many more patches that are accepted by the patch
	utility itself:
	- ignore/strip carriage return of patches with Windows end of lines
	- accept empty lines as contextual lines (instead of the expected " ")
	- accept spaces as separator between filename and timestamp if
	  there's no tab
	- accept a name that differs on the +++ line if the name in --- is
	  correct, and use the name in +++ if this one exists while the one
	  on --- doesn't.

2008-05-28  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package.pm (extract): If we extract a
	source package that uses a non-standard (!= 1.0) source package
	then we create debian/source/format to remember it.
	* scripts/dpkg-source.pl: Use debian/source/format as a new source
	of format to try when building the package. Prioritize it lower than
	command line and debian/control but higher than the default build
	formats.
	* man/dpkg-source.1: Document the above changes.

2008-05-28  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V3/quilt.pm: Factorize calls to
	quilt in a new run_quilt() function. And check only once
	if quilt is available while setting the default value of
	without_quilt option. Last but not least, register properly the
	automatically generated patch with quilt import.

2008-05-28  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Patch.pm (check_apply): New function to
	verify if a patch will successfully apply on top of a given
	directory.
	* scripts/Dpkg/Source/Package/V3/quilt.pm (check_patches_applied):
	Don't trust debian/patches/.dpkg-source-applied blindly. Get a
	list of (supposedly unapplied) patches and verify if the first
	patch applies or not. If yes, then apply the patch series,
	otherwise do not (and assume that the patch series is already
	applied).

2008-05-26  Helge Kreutzmann  <debian@helgefjell.de>

	* man/dselect.1: Fixed a typo and regenerated all po(t) files,
	including updating the German one.

2008-05-23  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V2.pm (do_build): Display a
	message when local modifications are stored in a new
	automatic patch. This messages includes a list of
	modified files.

2008-05-23  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V3/quilt.pm: Remove the .diff
	from the name of the automatically generated patch. It will
	facilitate the switch to this format: packages using
	patch system that apply debian/patches/*.{patch,diff}
	will not be bothered by the presence of the quilt serie
	created by dpkg-source itself.
	* man/dpkg-source.1: Update the documentation accordingly.

2008-05-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V3/quilt.pm: Add missing "use
	File::Path" for mkpath().

2008-05-13  Guillem Jover  <guillem@debian.org>

	* src/main.c (setforce): Add help output for '--force-breaks'.

2008-05-13  Sven Joachim  <svenjoac@gmx.de>

	* man/dpkg.1: Document triggers --debug values.

2008-05-13  Guillem Jover  <guillem@debian.org>

	* man/deb-version.5: Change '©' to '(C)'.

2008-05-12  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.20~.

2008-05-12  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.19.

2008-05-12  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gencontrol.pl: Get Package-Type field value also from
	custom field.

2008-05-11  Raphaël Hertzog  <hertzog@debian.org>

	* src/processarc.c (process_archive): While removing files that
	disappeared, move the call to namenodetouse before the test
	that skips directory shared with other packages. This is required
	because namenodetouse() handles trigger activation and we really
	want directories containing (only) removed files to activate the
	corresponding triggers.

2008-05-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V2.pm,
	scripts/Dpkg/Source/Package/V3/quilt.pm: Ensure the
	.dpkg-source-applied stamp file is created when an automatic patch
	is created so that a second build doesn't try to mistakenly
	reapply it.

2008-05-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Functions.pm (is_binary): New function
	to check if a file is binary by using diff against it.
	* scripts/Dpkg/Source/Package/V2.pm: Check that all files from the
	debian sub-directory are non-binary and only allow whitelisted
	binary files.
	* man/dpkg-source.1: Document this behaviour.

2008-05-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Changelog/Debian.pm (parse): Bugfix in creation of
	an unexpected new changelog entry that lacks an header line.

2008-05-04  Marco d'Itri  <md@linux.it>

	* scripts/Dpkg/Source/Patch.pm: Add missing import of internerr.

2008-04-26  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package.pm (upgrade_object_type): Instead
	of using the full Format: version to deduce the perl object name
	use only the major part of the version. The minor part is under
	control of the corresponding object, that way they can evolve
	and indicate that the source package has changed in a backwards
	compatible way. See
	http://lists.debian.org/debian-dpkg/2008/04/msg00045.html
	Also add a new parameter to disable update of the minor version in
	the Format field.
	(initialize): Don't let the Format field be updated by
	upgrade_object_type() as this function only loads information from
	the .dsc into the object.
	* scripts/Dpkg/Source/Package/**: Rename V1_0.pm into V1.pm,
	V2_0.pm into V2.pm and V3_0/ into V3/. Fix perl package names
	accordingly. Integrated a $CURRENT_MINOR_VERSION set to "0"
	in all packages.
	* scripts/Makefile.am, scripts/po/POTFILES.in: Update the lists
	according to above file renames.

2008-04-25  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V3_0/quilt.pm: Parse correctly
	series files with patch options and warn if something else than
	-p1 is used.
	* man/dpkg-source.1: Document how dpkg-source handles those patch
	options in series files.

2008-04-25  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V3_0/native.pm: Fix permissions of
	generated tarball to "666 & ~umask()".

2008-04-21  Helge Kreutzmann  <debian@helgefjell.de>

	* man/dpkg-shlibdeps.1: Fix a typo.
	* man/dpkg-source.1: Improve a sentence (with agreement from Raphäel).

2008-04-14  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Fields.pm (find_custom_field, get_custom_field):
	New function to handle custom fields (X[SBC]*-*).
	* scripts/dpkg-genchanges.pl: Use Package-Type control field to
	decide if a package is an udeb instead of relying on the file
	extension of a generated package since that doesn't work when
	generating source-only uploads for example.

2008-04-14  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Patch.pm (_fail_not_same_type): Fix
	inversion between new/old filetype.

2008-04-12  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Path.pm (check_files_are_the_same): Add a new
	parameter so that we can use stat() instead of lstat() and
	compare if pointed files are the same.
	* scripts/Dpkg/Source/Package.pm: Resolve symlinks before deciding
	if both original tarballs are the same or not. Use the new
	parameter of check_files_are_the_same() for this.
	* scripts/Dpkg/Source/Package/V1_0.pm: Remove useless import of
	check_files_are_the_same.

2008-04-12  Sven Joachim  <svenjoac@gmx.de>

	* scripts/Dpkg/Source/Package.pm: Add missing import of
	subprocerr.

2008-04-12  Russell Coker  <russell@coker.com.au>,
            Guillem Jover  <guillem@debian.org>

	* src/archives.c (tarobject): Set scontext to NULL after freecon.

2008-04-10  Sven Joachim  <svenjoac@gmx.de>

	* src/trigcmd.c: Fix typo.

2008-04-09  Sven Joachim  <svenjoac@gmx.de>

	* THANKS: Update my e-mail address.

2008-04-09  Helge Kreutzmann  <debian@helgefjell.de>

	* man/deb-triggers.5: Fix typos.
	* man/dpkg-trigger.1: Likewise.

2008-04-08  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.19~.

2008-04-08  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.18.

2008-04-08  Guillem Jover  <guillem@debian.org>

	* doc/triggers.txt: Fix wrong dpkg trigger related option names.

2008-04-08  Guillem Jover  <guillem@debian.org>

	* doc/triggers.txt: Move parts of the document into proper man pages.
	Add references to those.

2008-04-08  Guillem Jover  <guillem@debian.org>

	* man/dpkg.1: Document new trigger statuses, and new --triggers-only,
	--no-triggers and --triggers options.
	* man/deb-triggers.5: New file.
	* man/dpkg-trigger.1: Likewise.
	* man/Makefile.am (dist_man_MANS): Likewise.

2008-04-08  Guillem Jover  <guillem@debian.org>

	* man/dpkg.1: Sort package states.

2008-04-05  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V1_0.pm: Do not use
	diff -p to generate patches as dpkg-source of sarge doesn't accept
	data after the @@.

2008-04-04  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm (get_smallest_version): New
	function to retrieve the smallest "minver" of all symbols of a
	given library.
	* scripts/dpkg-shlibdeps.pl: Do not initialize dependencies of
	libraries with symbols files as unversioned, instead use the
	smallest minimal version returned by the function above. This
	is required because the library might not have always been
	available in the package and the unversioned dependency thus
	doesn't ensure his presence.

	* scripts/t/800_Dpkg_IPC.t: Remove temporary files used by the
	tests.

2008-04-03  Peter Karlsson  <peterk@debian.org>

	* man/dpkg-source.1: Corrected English.

2008-04-02  Sven Joachim  <svenjoac@gmx.de>

	* lib/triglib.c (trk_unknown_interest_change): Fix typo.
	* dselect/helpmsgs.cc (hlp_displayexplain1): Ditto.

2008-04-02  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package.pm, scripts/dpkg-genchanges.pl:
	Explicitly put Checksums-* fields before the Files field so that
	the Files field is last. This is a work-around for some braindead
	dsc parsers (dupload and sbuild for instance, see #473518 and
	#470440).

2008-04-01  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V2_0.pm: Add the option
	--skip-patches to not apply patches at the end of the source
	package extraction. Also works for Format: 3.0 (quilt).
	* man/dpkg-source.1: Document the above change.

2008-04-01  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Source/Package/V2_0.pm (do_extract): Create
	debian/patches/.dpkg-source-applied containing the list of patches
	applied during extraction.
	(prepare_build): apply patches before trying to build a source package
	when it's clear that they have not been applied because
	debian/patches/.dpkg-source-applied doesn't exist.
	* scripts/Dpkg/Source/Package/V3_0/quilt.pm: Likewise. If a .pc
	directory is present, then use "quilt unapplied" to check if all
	patches have been applied.
	* man/dpkg-source.1: Document the above changes.

2008-04-01  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/IPC.pm (fork_and_exec): Handle redirection
	of STDERR with new options error_to_{file,pipe,string,handle}.

2008-04-01  Guillem Jover  <guillem@debian.org>

	* lib/trigdeferred.l (trigdef_update_start): Use TRIGGERSLOCKFILE
	instead of literal string.

2008-04-01  Guillem Jover  <guillem@debian.org>

	* src/enquiry.c (badstatinfos): Fix typos (processesing -> processing).

2008-03-30  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-source.1: Make it clear that Format: 2.0 is not really
	meant to be widely used by moving all the explanations in the
	section describing the format "3.0 (quilt)".

2008-03-30  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.18~.

2008-03-30  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.17.

2008-03-30  Guillem Jover  <guillem@debian.org>

	* dselect/main.cc: Use <ncursesw/term.h> instead of <term.h>.
	* dselect/dselect.h: Use <ncursesw/curses.h> instead of <curses.h>.
	* dselect/Makefile.am (curkeys.h): Likewise.

2008-03-30  Guillem Jover  <guillem@debian.org>

	* po/POTFILES.in: Add 'lib/cleanup.c', 'lib/log.c', 'lib/myopt-util.c'
	and remove 'lib/showcright.c'.
	* scripts/Makefile.am (EXTRA_DIST): Add
	't/600_Dpkg_Changelog/regressions'.

2008-03-30  Ian Jackson  <ian@davenant.greenend.org.uk>,
            Guillem Jover  <guillem@debian.org>

	* doc/triggers.txt: New file.
	* lib/dlist.h: Likewise.
	* lib/trigdeferred.l: Likewise.
	* lib/triglib.c: Likewise.
	* src/trigcmd.c: Likewise.
	* src/trigproc.c: Likewise.
	* configure.ac: Use AC_PROG_LEX.
	* Makefile.am (EXTRA_DIST): Add 'doc/triggers.txt'.
	* po/POTFILES.in: Add 'lib/trigdeferred.c', 'lib/triglib.c',
	'src/trigcmd.c' and 'src/trigproc.c'.
	* dselect/helpmsgs.cc (hlp_displayexplain1): Document the new trigger
	statuses.
	* dselect/pkgdepcon.cc (packagelist::useavailable): Treat the trigger
	statuses in the same way as installed status.
	(packagelist::deppossatisfied): Likewise.
	* dselect/pkgdisplay.cc (statusstrings): Add trigger statuses
	descriptions.
	(statuschars): Likewise.
	* dselect/pkglist.cc (packagelist::ensurestatsortinfo): Mark trigger
	status as broken.
	* lib/.gitignore: Add 'trigdeferred.c'.
	* lib/Makefile.am (libdpkg_a_SOURCES): Add 'dlist.h', 'triglib.c' and
	'trigdeferred.l'.
	* lib/database.c (blankpackage): Initialize trigaw.head, trigaw.tail,
	othertrigaw_head and trigpend_head members.
	* lib/dbmodify.c (triggersdir, triggersfilefile): New variables.
	(triggersnewfilefile): Likewise.
	(fnis): Add 'TRIGGERSDIR', 'TRIGGERSDIR "/File"' and
	'TIGGERSDIR "/File.new"' entries.
	(modstatdb_init): Incorporate triggers.
	(modstatdb_note): Reset trigpend_head if status is not a trigger one.
	Remove awaited triggers if status is <= than configfiles. Clear
	awaiters.
	* lib/dpkg-db.h (struct trigpend, struct trigaw): New types.
	(enum trigdef_updateflags, struct trigdefmeths): Likewise.
	(struct trigfileint, struct trig_hooks): Likewise.
	(enum pkgstatus): Add stat_triggersawaited and stat_triggerspending.
	(struct pkginfo): Add new trigaw, othertrigaw_head and trigpend_head
	members.
	(triggersdir, triggersfilefile, triggersnewfilefile): New variables.
	(trigdef, trig_new_deferred, trigh): Likewise.
	(trigdef_update_start, trigdef_yylex, trigdef_process_done): New
	functions prototypes.
	(trig_note_pend_core, trig_note_pend, trig_note_aw): Likewise.
	(trig_clear_awaiters, trig_incorporate): Likewise.
	(trig_file_activate_byname, trig_file_activate): Likewise.
	(trig_file_interests_ensure, trig_file_interests_save): Likewise.
	(trig_cicb_interest_delete, trig_cicb_interest_add): Likewise.
	(trig_cicb_statuschange_activate, trig_parse_ci): Likewise.
	(illegal_triggername): Likewise.
	(trig_parse_cicb): New function typedef.
	(TRIGHOOKS_DEFINE_NAMENODE_ACCESSORS): New macro.
	* lib/dpkg.h (TRIGGERSCIFILE, TRIGGERSDIR, TRIGGERSFILEFILE)
	(TRIGGERSDEFERREDFILE, TRIGGERSLOCKFILE, MAINTSCRIPTPKGENVVAR)
	(MAINTSCRIPTDPKGENVVAR, MAXTRIGDIRECTIVE): New macros.
	(MAXUPDATES): Set to 250.
	* lib/dump.c (w_configversion): Do not write the field if on trigger
	statuses either.
	(w_status): Abort on unknown status. Assert the presence or not
	of awaited and pending triggers depending on the status.
	(w_trigpend, w_trigaw): New functions.
	* lib/fields.c (scan_word, f_trigpend, f_trigaw): Likewise.
	* lib/parse.c: Include <assert.h>.
	(fieldinfos): Add 'Triggers-Pending' and 'Triggers-Awaited' fields.
	(parsedb): Add new variable aw. Check for consistency between the
	triggers lists and the status. Initialize trigpend_head and trigaw.
	* lib/parsedump.h (f_trigpend, f_trigaw, w_trigpend, w_trigaw): New
	function prototypes.
	* lib/parsehelp.c (statusinfos): Add 'triggers-awaited' and
	'triggers-pending'.
	* src/Makefile.am (bin_PROGRAMS): Add 'dpkg-trigger'.
	(dpkg_SOURCES): Add 'trigproc.c'.
	(dpkg_trigger_SOURCES, dpkg_trigger_LDADD): New variables.
	* src/archives.c (check_conflict): Treat trigger statuses the same way
	as installed.
	(archivefiles): Install trigger hooks. Make act_triggers perform
	process_queue. Do a deferred triggers process run.
	(wanttoinstall): Treat trigger statuses the same way as installed.
	Remove duped check about package being installed on forced
	skip-same-version.
	* src/configure.c (deferred_configure): Activate file triggers on
	conffile changes.
	* src/depcon.c (depisok): Treat trigger statuses the same way as
	installed for the dependency and for breaks or conflicts. For depends,
	predepends, recommends and suggests treat triggerspending as installed
	and triggersawaited as halfconfigured.
	* src/enquiry.c (badstatinfos): Add stat_triggerspending and
	stat_triggersawaited entries.
	(yettobeunpacked): Treat trigger statuses as unpacked.
	(assertversion): Treat triggerspending the same way as installed,
	and triggersawaited as not fully installed.
	* src/filesdb.h (enum fnnflags): Add new fnn_nonew item.
	(struct filenamenode): Add new trig_interested member.
	* src/filesdb.c (ensure_package_clientdata): Initialize
	clientdata->trigprocdeferred.
	(findnamenode): Return NULL if flags has fnn_nonew and there is no
	match before creating a new one. Initialize trig_interested when
	creating a newnode.
	* src/help.c (statusstrings): Add trigger statuses descriptions.
	(namenodetouse): Activate a file trigger before returning.
	(post_postinst_tasks): Initialize trigpend_head to NULL. Set status
	to stat_triggersawaited if trigaw.head otherwise to new_status.
	Call post_postinst_tasks_core. Move call to modstatdb_note to ...
	(post_postinst_tasks_core): ... here. New function. Incorporate
	triggers.
	(post_script_tasks): Incorportate triggers.
	(do_script): Set MAINTSCRIPTPKGENVVAR and MAINTSCRIPTDPKGENVVAR
	environment variables.
	* src/main.h (struct perpackagestate): Add new trigprocdeferred
	member.
	(enum action): Add new act_triggers item.
	(f_triggers): New variable definition.
	(namenodetouse): Add a comment about its new side effects.
	(post_postinst_tasks_core): Likewise. New prototype.
	(enum debugflags): Add dbg_triggers, dbg_triggersdetail and
	dbg_triggersstupid items.
	(trigproc_install_hooks, trigproc_run_deferred): New protoypes.
	(trigproc_reset_cycle, trigproc): Likewise.
	(trig_activate_packageprocessing): Likewise.
	* src/main.c (usage): Document '--triggers-only' and
	'--[no-]triggers'.
	(f_triggers): New variable declaration
	(setdebug): Document new triggers debug flags.
	(cmdinfos): Add triggers-only, triggers and no-triggers entries.
	(main): Disable f_triggers when --triggers-only has been specified.
	* src/packages.c (progress_bytrigproc): New variable.
	(packages): Install trigger hooks. On act_configure skip the package
	also if trigpend_head is not valid. Handle act_triggers. Do a
	deferred triggers process run.
	(process_queue): New action_todo variable. Set the same value for
	istobe as on act_triggers as for act_configure. Print the same message
	when erasing the queue entry on act_triggers as for act_configure.
	Add packages which can be fixed by means of processing their triggers
	to the queue and set the action to act_configure. On act_triggers
	ohshit if trigpend_head is NULL, otherwise fall through to
	act_install. On act_configure call trigproc if there's pending
	triggers or call deferred_configure.
	(deppossi_ok_found): Add a new fixbytrig argument, fix all callers.
	Treat trigger statuses the same way as installed. Handle dependee
	trigger statuses.
	(dependencies_ok): Handle packages which can be fixed by means of
	processing their triggers.
	* src/processarc.c (process_archive): Ensure file triggers intersts.
	Activate trigger package processsing. Parse package triggers control
	file before reading the conffiles. Treat trigger statuses the same
	way as installed. Activate trigger package processing for the package
	being deconfigured and for conflictors. Parse package control file
	to delete the package and parse it again to re-add it and then save
	the file triggers interests. Activate trigger package processing for
	disappearing packages.
	* src/query.c (list1package): Add trigger statuses to the listing
	header and to the one letter statuses.
	* src/remove.c (checkforremoval): Treat trigger statuses in the same
	way as installed.
	(deferred_remove): Activate trigger package processing. Operate on
	packages with halfconfigured or higher status.
	(removal_bulk_remove_configfiles): Activate trigger package processing.

2008-03-28  Ian Jackson  <ian@davenant.greenend.org.uk>

	* src/packages.c (deppossi_ok_found): Refactor returning code.

2008-03-28  Ian Jackson  <ian@davenant.greenend.org.uk>

	* src/depcon.c (depisok): Improve whynot message by stating when a
	package is installed with 'is present'.

2008-03-28  Ian Jackson  <ian@davenant.greenend.org.uk>

	* src/help.c (cu_post_script_tasks): New function.
	(do_script): Install cu_post_script_tasks as a cleanup handler.
	(maintainer_script_alternative): Call post_script_tasks if the
	first do_script invokation fails instead of it succeeding.

2008-03-28  Ian Jackson  <ian@davenant.greenend.org.uk>,
            Guillem Jover  <guillem@debian.org>

	* src/main.h (maintainer_script_postinst): New prototype.
	* src/help.c (post_script_tasks): New function.
	(maintainer_script_installed): Renamed to ...
	(vmaintainer_script_installed): ... this. Dot not call
	ensure_diversions.
	(maintainer_script_installed): New function.
	(maintainer_script_postinst): Likewise.
	(maintainer_script_new): Call post_script_tasks instead of directly
	calling ensure_diversions.
	(maintainer_script_alternative): Likewise.
	* src/cleanup.c (cu_prermupgrade): Use maintainer_script_postinst
	instead of maintainer_script_installed.
	(cu_prermdeconfigure): Likewise.
	(cu_prerminfavour): Likewise.
	(cu_prermremove): Likewise.
	(deferred_configure): Likewise.
	* src/configure.c (deferred_configure): Likewise.

2008-03-28  Ian Jackson  <ian@davenant.greenend.org.uk>,
            Guillem Jover  <guillem@debian.org>

	* src/main.h (post_postinst_tasks): New prototype.
	* src/help.c (post_postinst_tasks): New function.
	* src/cleanup.c (cu_prermupgrade): Use post_postinst_tasks instead of
	duplicate code.
	(cu_prermdeconfigure): Likewise.
	(cu_prerminfavour): Likewise.
	(cu_prermremove): Likewise.
	* src/configure.c (deferred_configure): Likewise.

2008-03-28  Guillem Jover  <guillem@debian.org>

	* src/packages.c (process_queue): Fix typo in comment.

2008-03-28  Ian Jackson  <ian@davenant.greenend.org.uk>

	* src/help.c (statusstrings): Improve Breaks message by saying that
	it can be in that status due to a failed installation.

2008-03-29  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-buildpackage.pl: If the user request a cross-compilation,
	then define PKG_CONFIG_LIBDIR so that it will look in directories
	specidic to the target architecture.
	* man/dpkg-buildpackage.1: Document this change and also the -t option.

2008-03-28  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-buildpackage.pl: LDFLAGS now defaults to an empty
	value instead of "-Wl,-Bsymbolic-functions". The latter can break
	some libraries at run-time and such a change is best done
	at the beginning of a release cycle.

2008-03-28  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-source.1: Move a paragraph at its right place and some
	other presentation fixes.

2008-03-27  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs.pm: Support cross-compilation by adding
	directories containing libraries for the architecture that is
	being crossbuilt.

2008-03-27  Raphaël Hertzog  <hertzog@debian.org>
            Frank Lichtenheld  <djpig@debian.org>
            Joey Hess  <joeyh@debian.org>
            Colin Watson  <cjwatson@debian.org>

	* Merge branch 'sourcev3'. It contains an extensive refactoring of
	dpkg-source around many new modules in scripts/Dpkg/Source/.

	General purpose changes:
	* scripts/Dpkg/IPC.pm: New module offering fork_and_exec() to
	conveniently execute any program in a child process. It hides
	all the error checking and lets you easily redirect input and
	output streams.
	* scripts/t/800_Dpkg_IPC.t: Non-regression tests for the module
	above.
	* scripts/Dpkg/Exit.pm: New module to register functions
	that would be called if the process was interrupted by a signal.
	Useful to cleanup temporary files if we're interrupted while doing
	some heavy I/O operation (as dpkg-source can do).
	* scripts/Dpkg/ErrorHandling.pm (info, errormsg): info() reports
	informational notices on STDOUT and errormsg() displays an error
	message on STDERR without dying. Use it only when you will die
	later on but want to display all errors before doing so.
	* scripts/dpkg-source.pl: Heavy rewrite/refactoring based on
	all the modules listed below.
	* man/dpkg-source.1: Update the manual page to document all the
	source package formats and the associated options.

	Dpkg::Source::* infrastructural modules:
	* scripts/Dpkg/Source/Compressor.pm: Compress and uncompress a
	stream of data.
	* scripts/Dpkg/Source/CompressedFile.pm: Base class used to
	provide on-the-fly compression and decompression of any file.
	Dpkg::Source::Archive and Dpkg::Source::Patch inherit from it.
	* scripts/Dpkg/Source/Archive.pm: Create and manipulate tar files.
	* scripts/Dpkg/Source/Patch.pm: Create and manipulate patch files.
	* scripts/Dpkg/Source/Functions.pm: Misc helper functions.
	erasedir() removes recursively a directory in a safe manner.
	fixperms() make sure the permissions of all files in a tree
	are sane.

	Source package formats:
	* scripts/Dpkg/Source/Package.pm: Base class implementing the
	functions common to all source package formats.
	* scripts/Dpkg/Source/Package/V1_0.pm: Implement the actual
	"Format: 1.0" source package format.
	* scripts/Dpkg/Source/Package/V2_0.pm: Implement the wig&pen
	format as specified in http://www.dpkg.org/dpkg/NewSourceFormat.
	* scripts/Dpkg/Source/Package/V3_0/native.pm: Native source
	packages (single tarball) that supports all compressions
	methods. Compatible with "Format: 1.0" if gzip compression is
	used.
	* scripts/Dpkg/Source/Package/V3_0/quilt.pm: Next generation
	source package format based on wig&pen. It supports multiple
	.orig.tar files and all compressions schemes (gzip, bzip2, lzma).
	It uses quilt to apply patches at unpack time and is able to add
	a new patch at the end of the series if changes are present
	at build-time.
	* scripts/Dpkg/Source/Package/V3_0/bzr.pm: Experimental format
	based on a bzr repository. Contributed by Colin Watson.
	* scripts/Dpkg/Source/Package/V3_0/git.pm: Experimental format
	based on a git repository. Contributed by Joey Hess.
	* scripts/Dpkg/Source/Package/V3_0/custom.pm: Special purpose
	format that can be used to create source packages with arbitrary
	files. Useful for helper tools (like git-buildpackage) which can
	generate source files by themselves.

2008-03-25  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: Let the user configure the set of
	warnings that he wants. Add a new warning for useless libraries
	on all binaries analyzed. Disable by default the warning that
	does the same but individually, for each binary analyzed.
	* man/dpkg-shlibdeps.1: Update manual page accordingly.

2008-03-25  Ian Jackson  <ian@davenant.greenend.org.uk>

	* lib/dpkg-db.h (modstatdb_note_ifwrite): New prototype.
	* ib/dbmodify.c (modstatdb_note_ifwrite): New function.

2008-03-25  Ian Jackson  <ian@davenant.greenend.org.uk>

	* src/archives.c (archivefiles): Call log_message.
	* src/configure.c (deferred_configure): Likewise.
	* src/packages.c (packages): Likewise.
	* src/processarc.c (process_archive): Call log_action after printing
	the action to perform to stdout.
	* src/help.c (log_action): Call statusfd_send.
	* man/dpkg.1: Document improved status-fd output.

2008-03-25  Ian Jackson  <ian@davenant.greenend.org.uk>,
            Guillem Jover  <guillem@debian.org>

	* lib/dbmodify.c (status_pipes): Move definitions to ...
	* lib/log.c: ... here.
	* lib/dpkg-db.h (struct pipef, status_pipes): Move declarations to ...
	* lib/dpkg.h: ... here.
	(statusfd_send): New function protoype.
	* lib/log.c: Include <assert.h> and <unistd.h>.
	(statusfd_send): New function.
	* lib/dbmodify.c: Use statusfd_send instead of duplicate code.
	* src/configure.c: Likewise.
	* src/errors.c: Likewise.

2008-03-25  Guillem Jover  <guillem@debian.org>

	* lib/dbmodify.c (log_file, log_message): Move to ...
	* lib/log.c: ... here. New file.
	* lib/Makefile.am (libdpkg_a_SOURCES): Add 'log.c'.
	* lib/dpkg-db.h (log_file, log_message): Move declaration to ...
	* lib/dpkg.h: ... here.

2008-03-25  Ian Jackson  <ian@davenant.greenend.org.uk>,
            Guillem Jover  <guillem@debian.org>

	* src/packages.c (struct pkginqueue): Move declaration to ...
	* src/main.h: ... here.
	(queuelen): Remove extern declaration.
	(struct pkgqueue): New declaration.
	(PKGQUEUE_DEF_INIT): New macro.
	(add_to_some_queue): New function prototype.
	(remove_from_some_queue): Likewise.
	* src/packages.c (queuehead, queuetail, queuelen): Replace with ...
	(queue): ... this. New variable. Fix all users.
	(add_to_queue): Refactor into ...
	(add_to_some_queue): ... this. Take a struct pkgqueue argument.
	(process_queue): Assert that the queue is empty at the end of the
	function. Refactor queue entry removal into ...
	(remove_from_some_queue): ... this. New function.
	(add_to_queue): New function.

2008-03-25  Guillem Jover  <guillem@debian.org>

	* src/main.h (ensure_package_clientdata): Move prototype to ...
	* src/filesdb.h: ... here.
	* src/help.c (ensure_package_clientdata): Move function to ...
	* src/filesdb.c: ... here.
	* src/query.c: Remove duplicate function.

2008-03-25  Guillem Jover  <guillem@debian.org>

	* lib/dpkg-db.h (unlockdatabase): Change prototype to not take any
	argument (as it was not being used). Fix all callers.
	* lib/lock.c (unlockdatabase): Likewise.

2008-03-25  Ian Jackson  <ian@davenant.greenend.org.uk>,
            Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (lock_file): New function prototype.
	(unlock_file): Likewise.
	* lib/lock.c (cu_unlockdb): Rename to ...
	(cu_unlock_file): ... here. Rename dblockfd to lockfd, and take it
	from argv.
	(unlock_file): New function.
	(lock_file): Likewise.
	(dblockfd): Move variable to ...
	(lockdatabase): ... here. Call lock_file instead of doing the
	actual file locking.
	(unlockdatabase): Call unlock_file, instead if doing the actual
	pop_cleanup.

2008-03-24  Ian Jackson  <ian@davenant.greenend.org.uk>

	* lib/dpkg.h (error_printer): New function pointer type.
	(push_error_handler): Use error_printer instead of an explicit
	declaration in the argument list.
	(set_error_display): Likewise.
	* lib/ehandle.c (push_error_handler): Likewise.
	(set_error_display): Likewise.

2008-03-23  Guillem Jover  <guillem@debian.org>

	* configure.ac (DPKG_CHECK_COMPAT_FUNCS): Add 'strnlen'.
	* libcompat/Makefile.am [!HAVE_STRNLEN] (libcompat_a_SOURCES): Add
	'strnlen.c' and 'strnlen.h'.
	* libcompat/strnlen.c: New file (import from Simon Josefsson).
	* libcompat/strnlen.h: Likewise.
	* lib/tarfn.c: Include "strnlen.h".

2008-03-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/t/200_Dpkg_Shlibs.t: Fix test suite to handle the
	recent addition of the "objid" field to symbol hash returned
	by Dpkg::Shlibs::Objump::Object->get_symbol().

2008-03-22  Ian Jackson  <ian@davenant.greenend.org.uk>

	* lib/dpkg-db.h (enum pkgstatus): Sort entries.
	* lib/dump.c (w_status): Change 'stat_configfiles' to 'stat_installed'
	in assert as that's the new last item.
	* src/processarc.c (process_archive): Likewise.
	* src/packages.c (process_queue): Likewise.
	(deppossi_ok_found): Match sorting of 'enum pkgstatus'.
	* dselect/pkgdisplay.cc (statusstrings): Likewise.
	(statuschars): Likewise.
	* src/help.c (statusstrings): Likewise.
	* src/query.c (list1package): Likewise.
	* lib/parsehelp.c (statusinfos): Likewise.

2008-03-21  Guillem Jover  <guillem@debian.org>

	* lib/parse.c (cu_parsedb): Remove duplicate function.
	(parsedb): Use cu_closefd instead of cu_parsedb.

2008-03-21  Ian Jackson  <ian@davenant.greenend.org.uk>

	* src/archives.c (tarobject): Make 'fd' static.
	* lib/parse.c (parsedb): Likewise. Use ehflag_normaltidy on
	push_cleanup and pop_cleanup. Move pop_cleanup call just before its
	related close call.
	* src/processarc.c (process_archive): Do not install two cleanup
	handlers to close the fsys-tarfile pipe. Mark pipe descriptors with
	invalid values when closed.

2008-03-20  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/extract.c (safe_fflush): Change return type from int to
	void.

2008-03-20  Ian Jackson  <ian@davenant.greenend.org.uk>

	* lib/dpkg.h (cisspace): New prototype.
	* lib/utils.c (cisspace): New function definition.

2008-03-20  Ian Jackson  <ian@davenant.greenend.org.uk>

	* src/main.h (pkgadminfile): Move prototype to ...
	* lib/dpkg-db.h: ... here.
	* src/help.c (pkgadminfile): Move function definition to ...
	* lib/dbmodify.c: ... here.
	* src/query.c (pkgadminfile): Remove duplicated functions.

2008-03-20  Ian Jackson  <ian@davenant.greenend.org.uk>,
            Guillem Jover  <guillem@debian.org>

	* src/query.c (cu_closepipe, cu_closefile, cu_closefd): Remove
	duplicated functions.
	* src/help.c (cu_closepipe, cu_closefile, cu_closedir)
	(cu_closefd): Move function definitions to ...
	* lib/cleanup.c: ... here. New file.
	* src/main.h (cu_closefile, cu_closepipe, cu_closedir)
	(cu_closefd): Move prototypes to ...
	* lib/dpkg.h: ... here.
	* lib/Makefile.am (libdpkg_a_SOURCES): Add 'cleanup.c'.

2008-03-20  Ian Jackson  <ian@davenant.greenend.org.uk>

	* lib/dpkg-db.h (modstatdb_checkpoint): New prototype.
	* lib/dbmodify.c (checkpoint):  Remove static keyword. Rename to ...
	(modstatdb_checkpoint): ... this. Fix all callers.

2008-03-20  Ian Jackson  <ian@davenant.greenend.org.uk>

	* lib/tarfn.c (TarExtractor): Initialize h.LinkName and h.Name to
	NULL.

2008-03-16  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/Objdump.pm: Add "objid" property to
	symbols and fake "soname" property with the basename of the
	object's filename if the object has no official SONAME.
	* scripts/dpkg-shlibdeps.pl: Add some more debugging messages.
	* scripts/dpkg-shlibdeps.pl: Also count usage of alternate sonames
	for symbols found in symbols files.

2008-03-16  Guillem Jover  <guillem@debian.org>

	* configure.ac (AC_CHECK_HEADERS): Add 'libintl.h'.
	* lib/gettext.h [!ENABLE_NLS]: Use HAVE_LIBINTL_H instead of
	'(__GLIBC__ >= 2)'.

2008-03-15  Erast Benson  <erast@gnusolaris.org>

	* utils/start-stop-daemon.c (check): Move 'return' inside preprocessor
	conditionals, so that it does not just return on non-handled OSes.

2008-03-15  Erast Benson  <erast@gnusolaris.org>

	* utils/start-stop-daemon.c: Use __sun instead of __sparc__ to
	define OSsunos.

2008-03-15  Raphaël Hertzog  <hertzog@debian.org>

	* debian/dpkg.prerm: Removed as it's empty.
	* Makefile.am: Remove debian/dpkg.prerm from EXTRA_DIST.

2008-03-14  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Changelog/Debian.pm: Fix regression by re-allowing
	capitals (like UNRELEASED!) in the distribution/package name.
	* scripts/t/600_Dpkg_Changelog/regressions: Add capitals in the
	distribution name as part of the non-regression tests.

2008-03-14  Guillem Jover  <guillem@debian.org>

	Fix errors spotted by Helge Kreutzmann.

	* man/dpkg-buildpackage.1: Refer to 'Debian' not 'debian'. Remove a
	space beofre a comma. Replace FFLAGS with CFLAGS when referring to
	usage similar to C for Fortran. Do not make bold a terminating
	parenthesis.
	* man/dpkg-checkbuilddeps.1: Mark 'debian/contorl' file with italics.

2008-03-11  Ian Jackson  <ian@davenant.greenend.org.uk>,
            Guillem Jover  <guillem@debian.org>

	* lib/showcright.c: Rename to ...
	* lib/myopt-util.c: ... this.
	* lib/Makefile.am (libdpkg_a_SOURCES): Rename 'showcright.c' to
	'myopt-util.c'.

	* lib/dpkg.h (struct cmdinfo): Remove declaration.
	(showcopyright): Move prototype to ...
	* lib/myopt-util.c: ... here.
	(helponly, versiononly): New functions.
	* lib/myopt.h: Include <dpkg-def.h>.
	(showcopyright, helponly, versiononly, usage, printversion): New
	function prototypes.
	* dpkg-deb/main.c (printversion, usage): Remove static keyword.
	(helponly, versiononly): Remove function declarations and definitions.
	* dpkg-split/main.c: Likewise.
	* dselect/main.cc: Likewise.
	* src/main.c: Likewise.
	* src/query.c: Likewise.

2008-03-11  Guillem Jover  <guillem@debian.org>

	* lib/showcright.c (showcopyright): Move function prototype to ...
	* lib/dpkg.h: ... here, and replace existing one.

2008-03-11  Guillem Jover  <guillem@debian.org>

	* lib/Makefile.am (libdpkg_a_SOURCES): Add 'dpkg-def.h'.
	* lib/dpkg.h: Include 'dpkg-def.h'.
	(CONSTANT, PRINTFFORMAT, NONRETURNING, UNUSED): Move defninitions
	to ...
	* lib/dpkg-def.h: ... here. New file.
	* utils/start-stop-daemon.c: Include 'dpkg-def.h'.
	(CONSTANT, PRINTFFORMAT, NONRETURNING, UNUSED): Remove defninitions.

2008-03-11  Ian Jackson  <ian@davenant.greenend.org.uk>

	* lib/dpkg.h (fgets_checked, fgets_must): New function declarations.
	* lib/utils.c: Include <string.h>.
	(fgets_checked, fgets_must): New function.
	* src/filesdb.c (ensure_diversions): Use new fgets_checked and
	fgets_must instead of duped code.

2008-03-09  Ian Jackson  <ian@davenant.greenend.org.uk>

	* dselect/pkgdisplay.cc (relatestrings): Change 'breaks with' to
	'breaks'.

2008-03-09  Ian Jackson  <ian@davenant.greenend.org.uk>

	* dselect/pkgdepcon.cc (packagelist::resolvedepcon): Move dep_breaks
	case after dep_conflicts so that it falls through.
	(packagelist::deppossatisfied): Handle dep_breaks in the same way as
	dep_conflicts.

2008-03-09  Ian Jackson  <ian@davenant.greenend.org.uk>

	* dselect/pkgdepcon.cc (packagelist::deppossatisfied): The new rule
	is that a Conflicts is violated if the target package is installed
	or to be error-preserved ie would_like_to_install() != 0 - except
	that we disregard packages which directly Conflict with themselves.

2008-03-07  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Fields.pm: Import Dpkg::Gettext since we use _g().

2008-03-06  Sean Finney  <seanius@seanius.net>

	* lib/dump.c (writedb): Free newfn and oldfn.
	* src/help.c (clear_istobes): Free pkgiterator 'it' by calling
	iterpkgend.

2008-03-02  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-gencontrol.pl, scripts/dpkg-source.pl:
	Do not sort the dependency fields as order matters given
	the greedy algorithm that APT uses when trying to resolve
	dependencies. See discussion on debian-devel:
	http://lists.debian.org/debian-devel/2008/02/msg00893.html
	* man/dpkg-gencontrol.1: Document the above changes.

	* scripts/Dpkg/Deps.pm (simplify_deps): Tries to respect order put
	by the maintainer when simplifying dependencies.
	* scripts/t/400_Dpkg_Deps.t: Add a test-case to ensure that
	further changes respect this constraint.

	* scripts/dpkg-shlibdeps.pl: Sort generated dependencies to
	have a deterministic output.

2008-02-29  Frank Lichtenheld  <djpig@debian.org>

	* scripts/Dpkg/Changelog/Debian.pm (parse):
	One patch against the old parser that allowed
	chars '+' and '.' in distribution names was
	not forward ported into the new parser. Do
	this now.
	* scripts/t/600_Dpkg_Changelog/regression:
	Add testcase for this regression.

2008-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-gensymbols.1: Fix some groff errors detected by lintian.
	* man/dpkg-query.1: Likewise..

2008-02-22  Raphaël Hertzog  <hertzog@debian.org>

	* man/deb-symbols.5: Escape some hyphens so that they do not end up
	as minus sign.
	* man/dpkg-architecture.1: Likewise.
	* man/dpkg-shlibdeps.1: Likewise.
	* man/start-stop-daemon.8: Likewise.

2008-02-22  Raphaël Hertzog  <hertzog@debian.org>
	    Mike Frysinger  <vapier@gentoo.org>

	* scripts/Makefile.am: Modify PATH during make check to include
	build directories containing dpkg and the scripts dpkg-*.

2008-02-20  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Changelog.pm (parse_changelog): Fallback
	into /usr/lib/dpkg/parsechangelog to find changelog parser
	in case $dpkglibdir points to another directory (for example
	when DPKG_DATADIR is manually set).

2008-02-19  Frank Lichtenheld  <djpig@debian.org>

	* m4/libs.m4 (DPKG_LIB_CURSES): Use libncursesw if
	available.
	* debian/control: Change build-dependency from
	libncurses5-dev to libncursesw5-dev.

2008-02-19  Frank Lichtenheld  <djpig@debian.org>

	* man/dpkg-source.1: Fix documentation of -sk and -sp. The directory
	with the unpacked original source will be removed, not the tarball.

2008-02-17  Frank Lichtenheld  <djpig@debian.org>

	* scripts/Dpkg.pm: Allow overriding $pkgdatadir
	with $ENV{DPKG_DATADIR}.
	* scripts/Makefile.am (check): Use DPKG_DATADIR.
	* debian/rules: Remove hack to copy data files
	to build directory.

2008-02-17  Frank Lichtenheld  <djpig@debian.org>

	* man/dpkg-architecture.1: Document the files needed by
	dpkg-architecture.

2008-02-17  Frank Lichtenheld  <djpig@debian.org>
	    Matthias Klose  <doko@cs.tu-berlin.de>

	* scripts/dpkg-buildpackage.pl: Set a set of environment variables
	for setting compiler and linker options, unless already set in the
	environment. See https://wiki.ubuntu.com/DistCompilerFlags for
	background information.
	* man/dpkg-buildpackage.1: Document the new behaviour for build
	related environment variables.

2008-02-17  Zack Weinberg  <zackw@panix.com>

	* man/deb-shlibs.5: Make this manual page a bit more elaborate and
	helpful.

2008-02-13  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Version.pm: Import Dpkg::Gettext since we use _g().

2008-02-07  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gencontrol.pl: Do not output the Homepage field on udeb.

2008-02-04  Guillem Jover  <guillem@debian.org>

	* libcompat/Makefile.am (localedir): Remove unused variable.
	(INCLUDES): Do not pass -DLOCALEDIR nor -I$(top_srcdir)/lib.

2008-02-03  Guillem Jover  <guillem@debian.org>

	* m4/funcs.m4 (DPKG_CHECK_COMPAT_FUNCS): New macro.
	* configure.ac (DPKG_CHECK_COMPAT_FUNCS): Check getopt, getopt_long
	and obstack_free.
	* libcompat/Makefile.am (libcompat_a_SOURCES): Set empty by default.
	Only add 'getopt.c getopt.h' if !HAVE_GETOPT. Only add 'getopt1.c'
	if !HAVE_GETOPT_LONG. Only add 'obstack.c obstack.h' if
	!HAVE_OBSTACK_FREE.
	(INCLUDES): Add '-idirafter $(top_srcdir)/libcompat'.
	* dpkg-deb/Makefile.am (INCLUDES): Likewise.
	* dpkg-split/Makefile.am (INCLUDES): Likewise.
	* dselect/Makefile.am (INCLUDES): Likewise.
	* lib/Makefile.am (INCLUDES): Likewise.
	* src/Makefile.am (INCLUDES): Likewise.
	* utils/Makefile.am (INCLUDES): Use -idirafter instead of -I for
	'$(top_srcdir)/libcompat'.

	* src/Makefile.am (dpkg_LDADD): Add '../libcompat/libcompat.a'.
	(dpkg_query_LDADD): Likewise.
	* dpkg-deb/Makefile.am (dpkg_deb_LDADD): Likewise.
	* dpkg-split/Makefile.am (dpkg_split_LDADD): Likewise.
	* dselect/Makefile.am (dselect_LDADD): Likewise.

2008-02-03  Guillem Jover  <guillem@debian.org>

	* libcompat/Makefile.am (libcompat_a_SOURCES): Remove closeout.c,
	closeout.h, error.h, long-options.c and long-options.h.
	* libcompat/closeout.c: Remove unused file.
	* libcompat/closeout.h: Likewise.
	* libcompat/error.h: Likewise.
	* libcompat/long-options.c: Likewise.
	* libcompat/long-options.h: Likewise.

2008-02-03  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: Handle better the case when the
	library found has a different soname than the one used to look up
	the library file. Properly affect symbols coming from it to the
	soname wanted by the binary, thus avoiding invalid warnings about
	unused library.

2008-01-31  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-genchanges.pl: Always list all binary packages in
	the Description field of generated .changes files.

2008-01-30  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-buildpackage.pl: Warn if build-dependencies
	are not satisfied during -S. Also warn that this might become
	an error in the future.

2008-01-30  Justin Pryzby  <jpryzby+d@quoininc.com>

	* utils/start-stop-daemon.c (do_help): Clarify --name and --user
	options.
	(parse_options): Reword --make-pidfile badusage.
	(pid_is_cmd): Fix typo in comment.
	* man/start-stop-daemon.8: Cosmetic fixes. Document that --chuid
	will change the group even if it has not been specified. Add EXIT
	STATUS and EXAMPLE sections.

2008-01-29  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-buildpackage.pl: Add a new -R option to be able to
	replace "debian/rules" by something else. The replacement command
	can contain parameters (and thus spaces). Fix -r option to also
	accept parameters.
	* man/dpkg-buildpackage.1: Document the new option and the changed
	behaviour of -r.

2008-01-28  Guillem Jover  <guillem@debian.org>

	* getopt: Rename to ...
	* libcompat: ... this.
	* configure.ac (AC_CONFIG_FILES): Likewise.
	* Makefile.am (SUBDIRS): Likewise.
	* utils/Makefile.am (INCLUDES): Likewise.
	(start_stop_daemon_LDADD): Use '../libcompat/libcompat.a' instead of
	'../getopt/libopt.a'.
	* libcompat/Makefile.am (noinst_LIBRARIES): Rename 'libopt.a' to
	'libcompat.a'.
	(libopt_a_SOURCES): Rename to ...
	(libcompat_a_SOURCES): ... this.

2008-01-27  Raphaël Hertzog  <hertzog@debian.org>

	* README.feature-removal-schedule: Deprecate support of substvars
	in dpkg-source and dpkg-genchanges.
	* README.feature-removal-schedule, README.api: Deprecate support
	of custom changelog parsers that understand only the -v option.
	* README.feature-removal-schedule: Deprecate support of PGP.

2008-01-27  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm: Replace has_new_libs(),
	has_lost_libs(), has_new_symbols() and has_lost_symbols() by
	corresponding get_* functions.
	* scripts/dpkg-gensymbsols.pl: Display list of new/lost libs. Also
	display list of lost symbols when wildcards symbols have been
	used.
	* scripts/t/200_Dpkg_Shlibs.t: Adjust test suite to API change.

2008-01-26  Frank Lichtenheld  <djpig@debian.org>

	* scripts/Dpkg/Checksums.pm: New module for checksum handling
	in .changes and .dsc files.
	* scripts/dpkg-genchanges.pl, scripts/dpkg-source.pl: Use new
	module. Adds new 'Checksums-{Sha1,Sha256}' field
	to .changes and .dsc files. Increase changes format to 1.8.

2008-01-25  Andreas Påhlsson  <andreas.pahlsson@xcerion.com>

	* utils/start-stop-daemon.c (tsub): Remove function.
	(tmul): Fix normalization.
	(run_stop_schedule): Use timersub instead of tsub.

2008-01-24  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-genchanges.pl: Warn if the current version is
	smaller than the previous one.

	* scripts/dpkg-checkbuilddeps.pl: Add support of options -d and -c to
	use build dependencies/conflicts given on the command line instead of
	those retrieved from debian/control.
	* man/dpkg-checkbuilddeps.1: Document the new options.

2008-01-22  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/extract.c (extracthalf): Refactor fflush and its buggy
	fpos handling to ...
	(safe_fflush): ... here. New function.

2008-01-22  Guillem Jover  <guillem@debian.org>

	* lib/vercmp.c [0] (verrevcmp): Remove dead code.

2008-01-22  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h [!offsetof] (offsetof): New compatibilty macro.
	* lib/parsedump.h (PKGIFPOFF): Use offsetof instead of ad-hoc
	calculation.
	(FILEFOFF): Likewise.
	(struct fieldinfo): Change integer member type to size_t.
	* lib/tarfn.c (TarChecksumOffset): Use offsetof instead of ad-hoc
	calculation.

2008-01-22  Guillem Jover  <guillem@debian.org>

	* configure.ac (AC_CHECK_HEADERS): Check for 'stddef.h'.

2008-01-21  Colin Watson  <cjwatson@debian.org>

	* dselect/pkgkeys.cc (packagelist_korgbindings): Add 'C'.
	(packagelist_kinterps): Add 'revertinstalled'.
	* dselect/bindings.cc (keybindings::descriptions): Likewise.
	* dselect/pkglist.h (class packagelist): Add kd_revertinstalled.
	* dselect/pkgcmds.cc (packagelist::kd_revertinstalled): New method.
	* man/dselect.1: Document new 'C' keybinding.

2008-01-21  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (getfi): Use m_malloc instead of malloc.
	(do_build): Likewise.
	* dpkg-deb/extract.c (extracthalf): Likewise.
	* lib/mlib.c (buffer_write): Likewise.
	(buffer_copy): Likewise.
	* lib/myopt.c (loadcfgfile): Likewise.
	* lib/parse.c (parsedb): Likewise.
	* lib/showpkg.c (alloclstitem): Likewise.
	(parsefield): Likewise.
	(parsestring): Likewise.
	* lib/tarfn.c (StoC): Likewise.
	(TarExtractor): Likewise.
	* src/archives.c (try_deconfigure_can): Likewise.
	* src/main.c (execbackend): Likewise.

2008-01-21  Guillem Jover  <guillem@debian.org>

	* lib/mlib.c (m_strdup): New function.
	* lib/dpkg.h (m_strdup): New declaration.
	* lib/tarfn.c: Include <dpkg.h>.
	(TarExtractor): Use m_strdup instead of strdup.
	* lib/database.c (findpackage): Likewise.
	* lib/myopt.c (myfileopt): Likewise.
	* dpkg-deb/build.c (getfi): Likewise.
	* src/configure.c (md5hash): Likewise.
	* src/help.c (vbuildarglist): Likewis.
	* src/main.c (execbackend): Likewise.
	(commandfd): Likewise.

2008-01-21  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.17~.

2008-01-26  Raphaël Hertzog  <hertzog@debian.org>

	* configure.ac: Release 1.14.16.6.

2008-01-26  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-gensymbols: Don't scan directories which are
	symlinks. They might point outside of the package build dir which
	results in addition of libraries which are not in the package.
	The libc6 package on amd64 is affected with a symlink "lib64" ->
	"/lib".

2008-01-24  Raphaël Hertzog  <hertzog@debian.org>

	* configure.ac: Release 1.14.16.5.

2008-01-24  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm (load): Remove the loaded file
	from the %$seen hash at the end so that it's possible to include
	multiple times the same file (at the same level and not from any
	nested file obviously).

	* scripts/Dpkg/Shlibs/SymbolFile.pm: Blacklist many armel specific
	symbols.

2008-01-23  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.16.4.

2008-01-23  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Cdata.pm: Import capit from Dpkg::Fields.

2008-01-22  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.16.3.

2008-01-22  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (tvselector): Remove typedef.
	(tvselector_sec): Remove function.
	(tvselector_usec): Likewise.
	(TVCALC_ELEM): Remove macro.
	(TVCALC): Likewise.
	(tsub): New function.
	(tmul): Likewise.
	(run_stop_schedule): Use tsub and tmul instead of TVCALC. Make sure
	the time is not negative.

2008-01-22  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (main): Only call initgroups if changeuser
	is not NULL.

2008-01-22  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (gid_in_current_groups): Remove function.
	(main): Call initgroups if the real user or group are different than
	the ones we should switch to. Call setgid before initgroups.

2008-01-22  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-parsechangelog.1: Fix typos reported by Helge Kreutzmann.

2008-01-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-genchanges.pl, scripts/dpkg-gencontrol.pl,
	scripts/dpkg-source.pl: Remove the IO-layer that converts to
	UTF-8. It's not as smart as I expected.

	* scripts/dpkg-genchanges.pl: Do not substitute variables on
	the output.
	* man/dpkg-genchanges.pl: Document this change.

2008-01-22  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.16.2.

2008-01-22  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (main): Move setuid code after initgroups
	and setgid.

2008-01-21  Frank Lichtenheld  <djpig@debian.org>

	* configure.ac: Release 1.14.16.1

	* scripts/dpkg-source.pl: Fix "uninitialized value"
	warning.

	* debian/control: Add libtimedate-perl to
	dpkg-dev's Depends and to Build-Depends (for
	build-time tests). This introduces our first
	run-time dependency on a perl module not shipped
	with Perl itself. But to me it seems not worth
	trying to replace that code.

2008-01-21  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.16.

2008-01-21  Guillem Jover  <guillem@debian.org>

	* README.api: New file.
	* README.feature-removal-schedule: Likewise.
	* Makefile.am (EXTRA_DIST): Add README.feature-removal-schedule and
	README.api.

2008-01-21  Guillem Jover  <guillem@debian.org>

	* configure.ac (AC_CHECK_FUNCS): Escape new lines.

2008-01-21  Ian Jackson  <ian@davenant.greenend.org.uk>

	* src/processarc.c (process_archive): Fix incorrect sizeof in a
	memset call.

2008-01-21  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (main): Cast runas_uid and runas_gid to
	uid_t and gid_t when comparing to getuid() and getgid().

2008-01-21  Guillem Jover  <guillem@debian.org>

	* configure.ac (AC_CHECK_FUNCS): Merge arguments from both macro
	calls.

2008-01-21  Guillem Jover  <guillem@debian.org>

	* configure.ac (AM_GNU_GETTEXT): Add external.
	(AC_CHECK_FUNCS): Add strtoul.
	(AC_CONFIG_FILES): Remove 'intl/Makefile'.
	* .gitignore: Remove intl.
	* Makefile.am (SUBDIRS): Likewise.
	* dpkg-deb/Makefile.am (INCLUDES): Remove '-I$(top_srcdir)/intl'.
	* dpkg-split/Makefile.am (INCLUDES): Likewise.
	* dselect/Makefile.am (INCLUDES): Likewise.
	* getopt/Makefile.am (INCLUDES): Likewise.
	* lib/Makefile.am (INCLUDES): Likewise.
	* src/Makefile.am (INCLUDES): Likewise.
	* utils/Makefile.am (INCLUDES): Likewise.

2008-01-21  Guillem Jover  <guillem@debian.org>

	* configure.ac (AC_CHECK_FUNCS): Add getdtablesize.
	* utils/start-stop-daemon.c (get_open_fd_max): New function.
	(main) [OShpux]: Remove.
	[!OShpux]: Use get_open_fd_max instead of hardcoded getdtablesize.

2008-01-21  Guillem Jover  <guillem@debian.org>

	* man/start-stop-daemon.8: Fix quotation to get rid of a spurious
	space between -c option and comma.

2008-01-20  Guillem Jover  <guillem@debian.org>

	* man/start-stop-daemon.8: Coalesce all matching options into a new
	section. List matching options by reference in the description
	section.

2008-01-20  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (do_version): Change from 'Mandatory' to
	'Matching'. Suggested by Justin Pryzby.

2008-01-20  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-buildpackage.pl: Move most functions to end of file
	to allow better reading of the program flow. This is a remnant of
	the shell script past.

2008-01-19  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-buildpackage.pl: Use
	Dpkg::Changelog::parse_changelog() instead of calling
	dpkg-parsechangelog.

	* scripts/dpkg-checkbuilddeps.pl: Fix a bug left-over from the
	switch to Dpkg::Control.

2008-01-18  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm,
	scripts/Dpkg/Shlibs/Objdump.pm, scripts/Dpkg/Shlibs.pm: Update and
	fix many syserr(), error(), warning() and subprocerr() calls to
	the new style where the sprintf call is integrated. Uniformize
	some error messages at the same time.

2008-01-18  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm (load): Parse *@<version>
	symbols names as wildcards and not as regular symbols. They
	provide the same dependency information for all symbols that share
	the same version.
	* scripts/Dpkg/Shlibs/SymbolFile.pm (merge_symbols): Use
	information provided by wildcards entries when new symbols are
	added.
	* scripts/dpkg-gensymbols.pl: Disable some checks which can't be
	done when symbols files have been generated with the help of
	wildcard entries.
	* man/dpkg-gensymbols.1: Update the manual page to explain how to
	use wildcard entries.

2008-01-18  Frank Lichtenheld  <djpig@debian.org>

	* scripts/changelog/debian.pl: Don't hide failures inside eval().
	* scripts/Dpkg/Changelog.pm (data2rfc822): Don't fail if argument
	is undef.

2008-01-18  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Changelog.pm (parse_changelog): Rewrite it completely
	to not call dpkg-parsechangelog but do the work of this program by
	itself.
	* scripts/dpkg-parsechangelog.pl: Rewrote it to use the enhanced
	parse_changelog() function.
	* scripts/dpkg-genchanges.pl, script/dpkg-gencontrol.pl: Adapted to use
	the modified parse_changelog().
	* scripts/dpkg-gensymbols.pl, scripts/dpkg-source.pl: Likewise.

	* scripts/dpkg-genchanges.pl: Change logic of -si option to
	include the original tarball only if the current upstream version
	differs from the upstream version of the previous changelog entry.

	* scripts/dpkg-genchanges.pl: Some code refactoring. Also fix the
	generation of the Description field to not have duplicate description
	in case of udeb (a single description per binary package is enough).
	Source only uploads will loose their Description: fields since they
	have no associated binary packages and Descriptions are only added
	for binary packages where we have a corresponding .deb to upload.

2008-01-18  Guillem Jover  <guillem@debian.org>

	* m4/arch.m4 (_DPKG_ARCHITECTURE): Do not use backticks inside double
	quotes, to support ancient shells.
	* m4/libs.m4 (DPKG_LIB_SELINUX): Likewise.

2008-01-18  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (do_help): Coalesce mandatory options
	into a single paragraph, and state that at least one is required.

2008-01-18  Guillem Jover  <guillem@debian.org>

	* configure.ac (AC_CHECK_SIZEOF): Quote parameters.

2008-01-18  Guillem Jover  <guillem@debian.org>

	* THANKS: Add all the people that have contributed until now.

2008-01-18  Guillem Jover  <guillem@debian.org>

	* src/remove.c (ensure_pathname_nonexisting): Additionally check if
	errno is EEXIST after calling rmdir, per SUSv3 when the directory
	is not empty errno can be ENOTEMPTY or EEXIST.
	* src/help.c (removal_bulk_remove_files): Likewise.
	(removal_bulk_remove_leftover_dirs): Likewise.

2008-01-18  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Stop parsing '--test' as a valid
	option.
	($testmode): Remove variable.
	(usage): Remove '--test' option help.
	* man/update-alternatives.8: Remove '--test' documentation.

2008-01-18  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (do_help): Add missing semicolon.

2008-01-17  Guillem Jover  <guillem@debian.org>

	* THANKS: Convert to UTF-8.

2008-01-17  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (do_help): Move version printing to ...
	(do_version): ... here. New function.
	(main): Call do_version instead of printf.

2008-01-17  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-source.pl: Revert to the old behaviour of not using
	any substvars file.
	* man/dpkg-source.1: Fix default value of -T parameter.

2008-01-17  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-genchanges.pl: Reinstate support of the ${Format}
	substvars.

2008-01-17  Samuel Thibault  <samuel.thibault@ens-lyon.org>,
            Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (gid_in_current_groups): New function.
	(main): Call setuid only if requested to run as a different user
	than the current one. Call setgid only if requested to run as a group
	different than the current one, and initgroups only if the groups is
	not part of the supplementary groups.

2008-01-16  Frank Lichtenheld  <djpig@debian.org>

	* scripts/changelog/debian.pl: Restore the old default behaviour
	to parse STDIN. Also fix the -l option to specify a label for the
	parsed input, but the actual file. Still allow --file to be used for
	that. Use the new inhandle option of parse() to pass STDIN directly.
	This should be faster and removes the implicit dependency on
	IO::String.

	* scripts/Dpkg/Changelog/Debian.pm (parse): Accept input in
	configuration item 'inhandle'. Allow to override the name of the
	file (used for reporting) with configuration item 'reportfile'.
	* scripts/Dpkg/Changelog.pm (init): Call parse if 'inhandle' is given.

	* scripts/dpkg-parsechangelog.pl: Remove one superfluous %s from a
	formatstring which was used to output $! before syserr() was used
	instead.

2008-01-16  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (do_stop): Do not print messages when
	running on quiet and test modes.
	(run_stop_schedule): Likewise.
	(main): Likewise.

2008-01-16  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (do_pidfile): Cache pid value over
	multiple calls.

2008-01-16  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c: Fix indentation.

2008-01-16  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-divert.pl: Use :errno_h from POSIX.
	($enoent): Remove variable.
	(ENOENT): Remove function.
	* scripts/update-alternatives.pl: Likewise.
	* utils/Makefile.am (pkglib_PROGRAMS): Remove variable.
	(enoent_SOURCES): Likewise.
	* utils/enoent.c: Remove file.

2008-01-16  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (do_build): Use NULL instead of 0.
	* dpkg-deb/extract.c (extracthalf, do_fsystarfile): Likewise.
	* dpkg-deb/info.c (info_prepare, info_spew): Likewise.
	(do_contents, do_field): Likewise.
	* dpkg-deb/main.c (cipaction, action, cmdinfos, main): Likewise.
	* dpkg-split/join.c (do_join): Likewise.
	* dpkg-split/queue.c (do_auto): Likewise.
	* lib/dpkg.h (standard_startup, standard_shutdown): Likewise.
	* src/archives.c (destroyobstack, deconfigure, addfiletolist)
	(tarobject, check_breaks, check_conflict, archivefiles)
	(newconff_append): Likewise.
	* src/configure.c (deferred_configure, conffderef, md5hash): Likewise.
	* src/depcon.c (findbreakcyclerecursive, findbreakcycle)
	(depisok): Likewise.
	* src/enquiry.c (limiteddescription, badstatinfos, unpackchk)
	(assertversion, assertpredep, assertepoch, assertlongfilenames)
	(assertmulticonrep, predeppackage, cmpversions): Likewise.
	* src/errors.c (reports, print_error_perpackage): Likewise.
	* src/filesdb.c (diversions, diversionsfile, statoverridefile)
	(ensure_packagefiles_available, ensure_allinstfiles_available)
	(write_filelist_except, reversefilelist_init, reversefilelist_next)
	(ensure_diversions, iterfilestart, iterfilenext, filesdbinit)
	(findnamenode): Likewise.
	* src/help.c (checkpath, ensure_package_clientdata
	(vbuildarglist, cu_restorescriptsignals, script_catchsignals)
	(clear_istobes): Likewise.
	* src/main.c (cipaction, ignoredepends, forceinfos)
	(ACTION, OBSOLETE, ACTIONBACKEND, cmdinfos)
	(execbackend, commandfd, main): Likewise.
	* src/packages.c (queuehead, add_to_queue, packages, process_queue)
	(breakses_ok, dependencies_ok): Likewise.
	* src/processarc.c (process_archive): Likewise.
	* src/remove.c (deferred_remove, removal_bulk_remove_files)
	(removal_bulk_remove_leftover_dirs, removal_bulk_remove_configfiles)
	(removal_bulk): Likewise.
	* src/update.c (updateavailable): Likewise.
	* utils/start-stop-daemon.c (xgettimeofday, run_stop_schedule)
	(parse_options): Likewise.
	(pid_is_cmd, pid_is_user, pid_is_exec) [HAVE_KVM_H]: Likewise.

2008-01-15  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl (filter_deps): Fix filtering of
	duplicated dependencies in fields of lesser priority. Dependencies
	coming from shlibs files have no associated version and this case
	wasn't handled properly.
	* scripts/dpkg-shlibdeps.pl: When the same binary is passed
	several times as parameters (associated to different fields),
	associate it to the most important field.

2008-01-14  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-genchanges.pl, scripts/dpkg-gencontrol.pl,
	scripts/dpkg-source.pl: Hint Perl into using UTF-8 for output
	on *.dsc, *.changes and DEBIAN/control files. Updated some open() calls
	for more consistency and added binmode() calls for filehandles that
	handle only binary data.

2008-01-13  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Fields.pm: Drop public function
	set_fields_importance() in favor of a method on
	Dpkg::Fields::Object. Integrate	public function
	sort_field_by_importance() in the output() method where it was
	used.
	* scripts/Dpkg/Changelog.pm, scripts/dpkg-genchanges.pl,
	scripts/dpkg-gencontrol.pl, scripts/dpkg-source.pl: Updated to use
	the set_field_importance() method instead of the removed function.
	* scripts/Dpkg/Control.pm: Update pod documentation to refer to
	Dpkg::Fields::Object instead of the invalid Dpkg::Cdata::Object.

2008-01-13  Frank Lichtenheld  <djpig@debian.org>

	* scripts/Dpkg/Fields.pm (dump): Allow to omit the
	filehandle argument. If the function is called in
	non-void context, also remove the printed string
	to the caller. Together this avoids having to fiddle
	with filehandles if the caller doesn't want to.
	(output): Likewise.
	* scripts/Dpkg/Changelog.pm (data2rfc822): Simplify
	using this new behaviour.

	* scripts/t/600_Dpkg_Changelog.t: Add a new changelog
	'fields' that tests the handling of the different fields
	in the dpkg format.

	* scripts/Dpkg/Changelog.pm: Replace all field hashes
	with Dpkg::Changelog::Entry objects.
	(Dpkg::Changelog::Entry): Base on Dpkg::Fields::Object.
	(data2rfc822): Use Dpkg::Fields::Object->output and fix
	handling of user-defined fields.
	(data2rfc822_mult): Merge into data2rfc822 (autodetect
	whether the argument is an object or an array of object).
	* scripts/Dpkg/Changelog/Debian.pm: Adapt for
	Dpkg::Changelog::Entry changes.
	* scripts/t/600_Dpkg_Changelog.t: Likewise.

2008-01-13  Frank Lichtenheld  <djpig@debian.org>

	* man/dpkg-parsechangelog.1: Document the new command line options.

2008-01-12  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-shlibdeps.1: Fix a typo reported by Helge Kreutzmann.

2008-01-12  Raphael hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Fields.pm, scripts/dpkg-source.pl: Add support of
	Dm-Upload-Allowed field. It automatically ends up in the dsc.

2008-01-12  Raphael hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Fields.pm: Define variables containing
	authoritative list of fields for debian/control (one for source
	stanza, one for package stanza).
	* scripts/dpkg-genchanges.pl, scripts/dpkg-gencontrol.pl,
	scripts/dpkg-source.pl: Use the new variables to properly ignore
	valid fields. Some related cleanup.

2008-01-11  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-gencontrol.pl: Also force version in ${binary:Version}
	if dpkg-gencontrol -v<version> is used. That way we're consistent
	with the definition of that variable in deb-substvars(5).

2008-01-10  Raphaël Hertzog  <hertzog@debian.org>

	* man/dpkg-source.1: Explain better the first parameter of the '-b'
	option.

2008-01-10  Raphaël Hertzog  <hertzog@debian.org>

	* debian/control: Add a "Breaks: dpkg-dev (= 1.14.13),
	dpkg-dev (= 1.14.14)" on dpkg to force upgrade of those dpkg-dev
	versions that would break with the move of the compression related
	variables from Dpkg.pm into Dpkg/Compression.pm.

2008-01-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Version.pm: Import missing error function from
	Dpkg::ErrorHandling.

	* scripts/po/POTFILES.in: Add many modules containing translatable
	strings.

	* scripts/Dpkg/Changelog.pm (parse_changelog): New function to
	replace controllib's parsechangelog.

	* scripts/dpkg-buildpackage.pl, scripts/dpkg-checkbuilddeps.pl,
	scripts/dpkg-genchanges.pl, scripts/dpkg-gencontrol.pl,
	scripts/dpkg-gensymbols.pl, scripts/dpkg-source.pl: Update scripts to
	use Dpkg::Changelog::parse_changelog instead of the old controllib.pl's
	parsechangelog. With this last change controllib.pl is no more used by
	any script.

	* scripts/controllib.pl: Removed as it's no more used by any
	script.

	* debian/dpkg-dev.install: Add missing modules.

2008-01-08  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-parsechangelog.pl: Make the
	-L option actually work (it's only been eleven
	years...)
	
	* scripts/Dpkg/ErrorHandling.pm (report): export.

2008-01-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Cdata.pm, scripts/Dpkg/Control.pm: Add two new
	module to parse and manipulate files like debian/control.
	* scripts/t/600_Dpkg_Control.t,
	scripts/t/600_Dpkg_Control/control-1: Add non-regression tests for
	Dpkg::Control and Dpkg::Cdata.
	* scripts/dpkg-checkbuilddeps.pl, scripts/dpkg-genchanges.pl,
	scripts/dpkg-gencontrol.pl, scripts/dpkg-gensymbols.pl,
	scripts/dpkg-shlibdeps.pl, scripts/dpkg-source.pl: Update scripts
	to use the new modules Dpkg::Cdata, Dpkg::Control,
	Dpkg::Fields::Object and Dpkg::Substvars.

	* scripts/Dpkg/Version.pm (check_version): New function replacing
	checkversion of controllib.pl.
	* scripts/dpkg-source.pl, scripts/dpkg-buildpackage.pl: Use the
	new check_version.

	* scripts/Dpkg/Vars.pm (set_source_package): New function to set
	and check the global variable $sourcepackage (replacing
	controllib's setsourcepackage).
	* scripts/dpkg-genchanges.pl, scripts/dpkg-gencontrol.pl,
	scripts/dpkg-source.pl: Use the new set_source_package.

	* scripts/dpkg-distaddfile.pl, scripts/dpkg-gencontrol.pl: Delete
	the chown(getfowner(), ...) on new files. It doesn't seem to do
	anything useful anymore as it got dropped from several other
	scripts over the years without problems.

	* scripts/dpkg-source.pl: Integrate readmd5sum from controllib here
	as it's the only user of that function.

	* scripts/controllib.pl: Get rid of everything except
	parsechangelog and its dependencies (parsecdata, syntax) that are
	still needed.

	* scripts/Makefile.am: Include all the new files in the
	distributed tarball.

2008-01-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/ErrorHandling.pm (syntaxerr): New function to
	replace the syntax() function in controllib.pl.

2008-01-07  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl: Ignore Homepage field in binary package
	stanzas.
	* scripts/dpkg-source.pl: Likewise.

2008-01-07  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-checkbuilddeps.pl: Remove unused $dep_regex.

2008-01-07  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-checkbuilddeps.pl: Add build-essential as an implicit
	Build-Depends.

2008-01-07  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.16~.

2008-01-07  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.15.

2008-01-07  Guillem Jover  <guillem@debian.org>

	* src/archives.c (archivefiles): Use arglist instead of narglist.

2008-01-07  Guillem Jover  <guillem@debian.org>

	* lib/nfmalloc.c (nfmalloc): Remove inline keyword as extern inline
	changes semantics from GNU C to C99.
	* lib/varbuf.c (varbufaddc): Likewise.

2008-01-07  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/extract.c (extracthalf): Move negative member length check
	to ...
	(parseheaderlength): ... here. Change return type to size_t. Change
	variable r to ssize_t. Use strtol instead of strtoul to easily catch
	negative values.
	* dpkg-deb/info.c (info_spew): Use %zu in a format string instead of
	%lu to print pathlen, a size_t variable.
	* dpkg-split/queue.c (do_auto): Change j from unsinged int to int.
	Cast j to unsigned int when comparing it to i.
	* lib/varbuf.c (varbufprintf): Change ou from unsigned int to size_t.
	Change r from unsigned int to int. Cast value compared to r to int.
	(varbufprintf): Likewise.
	* src/archives.c (tarobject): Change r from size_t to ssize_t.
	Cast r to size_t when comparing it to symlinkfn.size.
	* src/main.c (setforce): Cast string difference to size_t instead of
	int.
	* utils/start-stop-daemon.c (parse_schedule): Change str_len from
	ptrdiff_t to size_t. Cast string difference to size_t instead of
	ptrdiff_t. Remove ptrdiff_t cast to sizeof.

2008-01-07  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/BuildOptions.pm (set): Parse all options separated
	by spaces or comma, do not lowercase the option names, do not match
	on name substrings, and on recognized options with invalid values
	discard the value or the entire option.
	* scripts/t/300_Dpkg_BuildOptions.t: Adjust test suite.

2008-01-06  Raphaël Hertzog  <hertzog@debian.org>

	* man/deb-control.5: Explain better the ordering of call of
	postinst/prerm during installations and removal between a package
	and its dependencies.

2008-01-06  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/Objdump.pm: Also retrieve dynamic relocation
	records from objdump by adding the -R option. Use this information
	to mark symbols affected by R_*_COPY relocations as undefined.
	They are initialized by the loader with values searched in the
	needed libraries.

	* scripts/Dpkg/BuildOptions.pm (set): Change the default value of
	the overwrite parameter to 1. The only use of this function in
	dpkg-buildpackage is missing the parameter and actually wants to
	overwrite the whole variable.
	* scripts/t/300_Dpkg_BuildOptions.t: Adjust the test suite for this
	change.

2008-01-04  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm: Replace #DEPRECATED by
	#MISSING in the output and recognize both while parsing. People
	understand better that way.

2008-01-03  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl (find_symbols_file): When libraries
	are found in non-packaged files, first try to find the
	corresponding symbols file in the build tree containing that
	library. On the opposite, don't look up symbols files in debian/*
	build directories for libraries found in installed packages (build
	trees are scanned first and thus if they contain a needed library
	dpkg-shlibdeps will find the library there and not in an installed
	package).
	* scripts/dpkg-shlibdeps.pl (my_find_library): When defining the
	list of package build trees to scan, also consider those that
	contain symbols files (instead of only considering those that have
	a shlibs file).
	* man/dpkg-shlibdeps.1: Document the change listed above.

	* scripts/dpkg-shlibdeps.pl: Add a new -S<pkgbuilddir> option to
	indicate a package build tree that should be scanned first when
	trying to find a library.
	* man/dpkg-shlibdeps.1: Document the new -S option.

	* scripts/dpkg-shlibdeps.pl (add_shlibs_dep): Use the same logic
	as find_symbols_files to find shlibs files. Check
	debian/*/DEBIAN/shlibs only when the library has not been found in
	an installed package, and give precedence to the shlibs provided
	by the binary package where the library has been found. Replaces
	the previous work-around that gave precedence to the package
	that contained the binary.
	* man/dpkg-shlibdeps.1: Document the above change in the shlibs
	search order.

2008-01-03  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-buildpackage.pl: Do not automatically enable '-j'
	if DEB_BUILD_OPTIONS contains parallel=n, and allow overriding
	its value from the environment.
	* man/dpkg-buildpackage.1: Document new -j behaviour.

2008-01-02  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c [!__GNUC__] (fatal, badusage): Remove
	redundant function declarations.

2008-01-02  Guillem Jover  <guillem@debian.org>

	* src/main.h (struct stat): New forward declaration.

2008-01-02  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (warningf): Add PRINTFFORMAT attribute.
	(buffer_copy_setup_PtrInt): Likewise.
	(buffer_copy_setup_PtrPtr): Likewise.
	(buffer_copy_setup_IntPtr): Likewise.
	(buffer_copy_setup_IntInt): Likewise.
	(decompress_cat): Likewise.
	(compress_cat): Likewise.
	* lib/dpkg-db.h (log_message): Likewise.

2008-01-02  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (NONRETURNPRINTFFORMAT): Remove macro.
	(ohshit): Use NONRETURNING and PRINTFFORMAT instead of
	NONRETURNPRINTFFORMAT.
	(ohshite): Likewise.
	(badusage): Likewise.
	* utils/start-stop-daemon.c (NONRETURNPRINTFFORMAT): Remove macro.
	(fatal): Use NONRETURNING and PRINTFFORMAT instead of
	NONRETURNPRINTFFORMAT.

2008-01-01  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-buildpackage.pl: Use Dpkg::Compression. Use $comp_regex
	to match compressed diffs and tarballs.

2008-01-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	* utils/start-stop-daemon.c (do_stop): Do not print 'failed to kill'
	warning when doing pid polling.

2008-01-01  Guillem Jover  <guillem@debian.org>

	* src/archives.c (archivefiles): Remove pointless strdup for execvp
	arguments.

2008-01-01  Ian Zimmerman  <itz@buug.org>

	* scripts/install-info.pl: Ignore wrapped lines when matching
	section titles.

2008-01-01  John Zaitseff  <J.Zaitseff@zap.org.au>

	* dselect/baselist.cc (baselist::wordwrapinfo): Stop processing when
	exceeding infopad line limit, and add a warning message.

2008-01-01  Sven Rudolph  <sr1@loom.sax.de>

	* dselect/baselist.cc (baselist::startdisplay): Set helpscreen_attr
	on monochrome terminals.

2007-12-30  A. Costa  <agcosta@gis.net>

	* man/dpkg-gensymbols.1, man/dpkg-shlibdeps.1: Fix some typos.
	* man/dpkg-source.1, man/deb-symbols.5: Likewise.

2007-12-28  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg.pm: Add a warning to avoid adding unnecessary stuff
	in that module.

2007-12-27  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg.pm (%EXPORT_TAGS, @EXPORT_OK): Remove.
	(@comp_supported, %comp_supported, %comp_ext, $comp_regex): Move
	variables ...
	* scripts/Dpkg/Compression.pm: ... here. New file.
	* scripts/dpkg-genchanges.pl: Use new module Dpkg::Compression
	instead of tag from Dpkg.
	* scripts/dpkg-source.pl: Likewise
	* scripts/Makefile.am (nobase_dist_perllib_DATA): Add
	'Dpkg/Compression.pm'.

2007-12-27  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm: Blacklist some armel specific
	symbols (__exidx_end, __exidx_start).

2007-12-27  Raphaël Hertzog  <hertzog@debian.org>

	* Makefile.am: Add some missing files in EXTRA_DIST. And add a
	dist-hook rule to check that all files contained in the git
	repository (except .gitignore) are included in the dist tarball.

2007-12-27  Raphaël Hertzog  <hertzog@debian.org>

	* configure.ac: Bump version to 1.14.15~.

2007-12-27  Raphaël Hertzog  <hertzog@debian.org>

	* configure.ac: Release 1.14.14.

2007-12-27  Raphaël Hertzog  <hertzog@debian.org>

	* debian/control: Bump dpkg dependency to >= 1.14.13 in dpkg-dev
	as dpkg-source needs the latest Dpkg.pm.
	* debian/control: Add libio-string-perl to Build-Depends as it's
	needed for a non-regression test (200_Dpkg_Shlibs.t).
	* debian/control: Fix priority of dselect to match the priority
	set by ftpmasters.

2007-12-27  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.14~.

2007-12-27  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.13.

2007-12-27  Flavio Stanchina  <flavio@stanchina.net>

	* scripts/dpkg-divert.pl (checkrename): Do not ignore ENOENT for
	destination.

2007-12-27  Daniel Leidert  <daniel.leidert@wgdd.de>
            Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Refactor duplicate code into ...
	(checked_alternative): ... here. New function.
	(set_links): Call it.

2007-12-27  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl (gl): Use defined instead of length.

2007-12-27  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl (set_links): New function.
	(config_alternatives): Use set_links instead of duped code.
	(set_alternatives): Likewise.

2007-12-27  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Refactor all code to use
	checked_mv instead of duped code.

2007-12-27  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Refactor all code to use
	checked_symlink instead of duped code.

2007-12-27  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl (checked_rm): New function. Refactor
	all code to use it instead of duped code.

2007-12-26  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-source.pl: Provide a sane default $origtargz in all
	cases when such a file exists.

2007-12-24  Guillem Jover  <guillem@debian.org>

	* man/Makefile.am (all-local): Rename to ...
	(all-local-yes): ... this.
	(clean-local): Rename to ...
	(clean-local-yes): ... this.
	(install-data-local): Rename to ...
	(install-data-local-yes): ... this.
	(uninstall-local): Rename to ...
	(uninstall-local-yes): ... this.
	(all-local, all-local-no, clean-local, clean-local-no): New targets.
	(install-data-local, install-data-local-no): Likewise.
	(uninstall-local, uninstall-local-no): Likewise.

2007-12-20  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: Always consider the shlibs of the
	current package before the shlibs of other binary packages when
	looking for a dependency.

2007-12-13  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/t/500_Dpkg_Path.t, scripts/Makefile.am: Add new
	non-regression tests for functions provided by the Dpkg::Path
	module.

2007-12-12  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl: Fix typo (syserror() -> syserr()).

2007-12-12  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gencontrol.pl (spfileslistvalue): Use || to fallback to
	a default value instead of using a temporary variable and checking if
	it's not defined.

2007-12-12  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl: Use ||= instead of checking if the
	variables are not defined.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/update-alternatives.pl (fill_missing_slavepaths): Likewise.

2007-12-11  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Deps.pm: Add a compare function that compares
	dependencies more intelligently than a comparison on their
	string representation. In particular we want >= and >> to sort
	lower than << and <= so that intervals are nicely displayed
	as "a (>= 1), a (<< 2)" instead of the ugly "a (<< 2), a (>= 1)".

2007-12-10  Raphaël Hertzog  <hertzog@debian.org>

	* README.translators: Explain how to format Git commit messages.

2007-12-10  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm (merge_symbols): Do not update
	the deprecated version of a symbol if it is already marked
	deprecated.

2007-12-09  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm: Parse and dump properly
	new meta-information fields (on lines starting with an asterisk).
	Bugfix with alternate dependency handling that were not properly
	dumped. New functions get_dependencies() and get_field().
	* scripts/t/200_Dpkg_Shlibs.t,
	scripts/t/200_Dpkg_Shlibs/symbols.fake-2: Add a test case to
	verify that meta-information fields and alternate dependencies are
	properly parsed and dumped.
	* scripts/dpkg-shlibdeps.pl: Take into account the new
	Build-Depends-Package field in symbols files.
	* man/deb-symbols.5: Describe syntax of meta-information fields and
	document the Build-Depends-Package field.
	* man/dpkg-shlibdeps.1: Describe how the Build-Depends-Package field
	of symbols file is used.

2007-12-09  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/SymbolFile.pm (load): Pass the current
	object as last parameter so that included files do not need to
	repeat the header line.
	* scripts/t/200_Dpkg_Shlibs/symbols.fake-1,
	scripts/t/200_Dpkg_Shlibs/symbols.include-1: Adjust some tests
	to also test inclusions with included files lacking a header line.
	* man/dpkg-gensymbols.1: Remove the restriction that included files
	must be valid symbol files on their own.

2007-12-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: Doesn't warn any more about libm.so.6
	being unused if the binary is also linked against libstdc++ since
	g++ always add an implicit -lm.

2007-12-08  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs.pm (find_library): When it finds a library
	in a directory which is just a symlink to another directory that
	is also considered, remember the other directory name as the
	canonical one.
	* scripts/Dpkg/Path.pm: Add new function canonpath() and
	resolve_symlink().

2007-12-05  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-buildpackage.pl: Add new
	-A option (passed to dpkg-genchanges).
	* scripts/dpkg-genchanges.pl: Add new -A
	option that will include only arch-indep
	packages into the upload.

2007-12-05  Frank Lichtenheld  <djpig@debian.org>
	    Goswin von Brederlow  <brederlo@informatik.uni-tuebingen.de>
	    Bastian Blank  <waldi@debian.org>

	* scripts/dpkg-genchanges.pl: Support more
	than one arch and more than one type of
	a package in debian/files.

2007-12-04  Frank Lichtenheld  <djpig@debian.org>

	* dpkg-deb/info.c (info_spew): Replace a
	%ld with %lu to fix compiler warning.

	* scripts/dpkg-genchanges.pl: Use comp_regex
	from Dpkg to correctly exlucde the .orig.tar
	even if it is not compressed with gzip.

	* scripts/dpkg-source.pl: Move definition
	of @comp_supported, %comp_supported, %comp_ext,
	$comp_regex to...
	* scripts/Dpkg.pm: ...here. Make them exportable
	via the :compression tag.

	* scripts/Dpkg/ErrorHandling.pm (usageerr):
	Support format strings like all the other
	error reporting functions.

	* scripts/Makefile.am (EXTRA_DIST): Add
	missing files from scripts/t/.

	* debian/rules: Call dh_installchangelogs
	and dh_installdocs for all packages instead
	of only for dpkg.
	* debian/dpkg-dev.docs: Symlink to dpkg.docs.
	* debian/dselect.docs: Likewise.
	* debian/dpkg-dev.preinst: Remove
	/usr/share/doc/dpkg-dev symlink on upgrade.
	* debian/dselect.preinst: Likewise.

2007-11-29  Frank Lichtenheld  <djpig@debian.org>

	* scripts/controllib.pl (parsecdata): Fix
	regex to determine the field name correctly
	if the field's value starts with a colon.

2007-11-29  Frank Lichtenheld  <djpig@debian.org>

	* man/deb-control.5: Move description of version format to...
	* man/deb-version.5: Take the section from policy describing version
	format and sorting since this is probably as good as it gets for
	describing these.

2007-11-29  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.13~.

2007-11-29  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.12.

2007-11-29  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-scanpackages.pl: Use Dpkg::Version.
	(vercmp): Use compare_versions instead of 'dpkg --compare-versions'.

2007-11-29  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-scanpackages.pl: Use Dpkg::ErrorHandling. Use error
	syserr and subprocerr instead of die and sprintf.
	(load_override): Likewise.

2007-11-29  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gencontrol.pl: Unify parsing of Section and Priority
	fields with Homepage.
	(%spvalue, %spdefault): Remove unued variables.
	(spfileslistvalue): Use %f instead of %spvalue.

2007-11-29  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gencontrol.pl (spfileslistvalue): Add prototype. Move
	to the top of the file with the other functions.

2007-11-29  Guillem Jover  <guillem@debian.org>

	* src/main.c (log_file): Move definition to ...
	* lib/dpkg-db.h: ... here.
	* src/configure.c (status_pipes): Remove extern definition.
	* src/errors.c (status_pipes): Likewise.
	* lib/tarfn.c (TarExtractor): Do not declare as extern.

2007-11-29  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (arbitrary_fields): Define as static.
	* lib/dbmodify.c (fnis): Likewise.
	* lib/fields.c (conffvalue_lastword): Likewise.
	* lib/tarfn.c (StoC): Likewise.
	* src/packages.c (breaks_check_target): Likewise.
	* utils/start-stop-daemon.c (siglist): Likewise.

2007-11-28  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-gensymbols.pl: The environment variable
	DPKG_GENSYMBOLS_CHECK_LEVEL can override the level of checks made
	by dpkg-gensymbols. This offers the possibility to unofficial
	ports to ignore errors due to symbols files that do not correspond.

2007-11-28  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: Harmonize a failure message.
	* man/dpkg-shlibdeps.1: Provide explanations concerning the two
	failures that dpkg-shlibdeps might generate. This is needed so
	that maintainers have an idea of what to do to fix the problems.

2007-11-28  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: Do not fail if it
	can't find unversioned libraries, just output a warning.
	Consequently skip the check on symbols when some libs were not
	found because one can not be sure that the symbols was not
	provided by the missing library.

2007-11-28  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl (find_packages): Make sure to always
	return [''] for a miss in the 'dpkg -S' query.
	* scripts/dpkg-shlibdeps.pl: Always try the realpath($lib) as
	fallback to identify the package (even if it's not a symlink)
	because due to broken RPATH we might get library filenames such as
	"/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/libssl.so.9.8"
	which is not a symlink and which can still be simplified to
	"/usr/lib/libssl.so.9.8" with realpath().

2007-11-25  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs.pm (find_library): Canonicalize paths before
	returning them as bad RPATH can lead to non-canonical paths
	causing us troubles in dpkg-shlibdeps.
	* scripts/dpkg-gensymbols.pl: Some formatting fixes.
	* scripts/dpkg-shlibdeps.pl: Likewise.

2007-11-24  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-gensymbols.pl: Add a new -I<file> option to force
	the usage of a specific file as basis for the generated symbols
	file.
	* man/dpkg-gensymbols.1: Document the new -I<file> option.

2007-11-24  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.12~.

2007-11-24  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.11.

2007-11-24  Guillem Jover  <guillem@debian.org>

	* scripts/Makefile.am (clean-local): Run chmod only if t.tmp exists.

2007-11-24  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-scanpackages.pl (%vercache): Declare with 'my' instead
	of 'our'.
	* scripts/dpkg-shlibdeps.pl ($host_arch): Likewise.

2007-11-24  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Arch.pm (get_raw_host_arch): Do not shadow
	$gcc_host_gnu_type with a local variable.

2007-11-24  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-scanpackages.pl: Use parenthesis to force the
	precedence when checking if the specified override file exists.

2007-11-24  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-scanpackages.pl: Do not require controllib.pl anymore.

2007-11-23  Aaron M. Ucko  <ucko@debian.org>

	* scripts/dpkg-shlibdeps.pl: Optimize "dpkg -S" lookups by caching
	results.

2007-11-23  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: Limit the number of warnings
	displayed about symbols not found in libraries to 10 per binary.

2007-11-23  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: Look for libs in the package's build
	tree even if that package doesn't contain an shlibs file. Then
	don't complain about missing dependency information if the lib is in
	the same package than the binary. Also ignore it if the library is
	not versionned and can't have an shlibs file.
	* scripts/Dpkg/Path.pm (guess_pkg_root_dir)
	(check_files_are_the_same): New helper functions.

2007-11-23  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.11~.

2007-11-23  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.10.

2007-11-23  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Arch.pm (get_build_arch): Rename to ...
	(get_raw_build_arch): ... this.
	(get_build_arch): New function.
	(get_host_arch): Rename to ...
	(get_raw_host_arch): ... this. Use get_raw_build_arch instead of
	get_build_arch.
	(get_host_arch): New function.
	(@EXPORT_OK): Add get_raw_build_arch and get_raw_host_arch.
	* scripts/dpkg-architecture.pl: Import get_raw_build_arch and
	get_raw_host_arch instead of get_build_arch and get_host_arch.
	Fix all callers.

2007-11-23  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-architecture.pl (%env): Rename to ...
	(%v): ... this.
	($deb_build_arch, $deb_build_arch_os, $deb_build_arch_cpu)
	($deb_build_gnu_cpu, deb_build_gnu_system, deb_build_gnu_type)
	($deb_host_arch, $deb_host_arch_os, $deb_host_arch_cpu)
	($deb_host_gnu_cpu, $deb_host_gnu_system, $deb_host_gnu_type): Use
	the %v hash to store those variables using the values from @ordered
	as keys.
	($abi): New variable.

2007-11-23  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gensymbols.pl (@librarypaths): Remove duplicated
	declaration.

2007-11-23  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Fields.pm (%fieldimps): Declare with 'my' instead
	of 'our'.

2007-11-22  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-name.sh (getname): Get the package extension from the
	Package-Type field, or fallback to deb if not present.
	* man/dpkg-name.1: Document that the Package-Type field is now
	supported.

2007-11-22  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: Add more debug messages. Accept empty
	dependencies in shlibs files again. When symlinks to libraries are
	not found by "dpkg -S", try the same on the realpath of the
	library as fallback before deciding that it's a library being
	built.
	* scripts/Dpkg/Shlibs.pm: Always add paths from LD_LIBRARY_PATH
	at the beginning of the list of path to search, even if they
	are already listed (one might want to use LD_LIBRARY_PATH to
	change the search order).
	* scripts/dpkg-source.pl: Fix regex used to identify the extension
	of the orig.tar.{gz,bz2,lzma} file.

2007-11-21  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Shlibs/Objdump.pm (reset): Initialize HASH, GNU_HASH,
	SONAME and flags.
	(is_executable, is_public_library): Fix the checks.
	* scripts/t/200_Dpkg_Shlibs.t: Add some more tests to make sure
	the above functions behave as expected.
	* scripts/t/400_Dpkg_Deps.t: Add some more tests to make sure that
	empty dependency fields are correctly handled.
	* scripts/t/200_Dpkg_Shlibs/objdump.dbd-pg: New file.
	* scripts/t/200_Dpkg_Shlibs/objdump.ls: Likewise.
	* scripts/Makefile.am (EXTRA_DIST): Include
	't/200_Dpkg_Shlibs/objdump.dbd-pg' and 't/200_Dpkg_Shlibs/objdump.ls'.
	* scripts/controllib.pl (capit, set_field_importance)
	(sort_by_field_importance): Move functions to ...
	* scrips/Dpkg/Fields.pm: ... here. New file.
	* scripts/dpkg-shlibdeps.pl: Use Dpkg::Fields for capit().
	* scripts/dpkg-genchanges.pl: Use Dpkg::Fields for capit() and
	set_field_importance().
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise.

2007-11-20  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.10~.

2007-11-20  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.9.

2007-11-19  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Path.pm: Fix behaviour of get_pkg_root_dir() when
	there's no DEBIAN subdirectory in none of the parent directories.
	* scripts/dpkg-shlibdeps.pl: Handle undef values returned by
	get_pkg_root_dir() and complain when it's likely to create a
	problem (when a RPATH contains $ORIGIN and when the value of
	this variable can't be determined because we don't know what
	is the root directory of the temporary tree).
	* scripts/Dpkg/Deps.pm: Fix parse() to handle empty fields instead
	of returning undef.

2007-11-19  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.9~.

2007-11-19  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.8.

2007-11-19  Guillem Jover  <guillem@debian.org>

	* man/dpkg-architecture.1: Remove unneeded formatting surrounding '-c'
	in example command, as a side effect get rid of an undefined macro.
	* man/dpkg-checkbuilddeps.1: Remove usage of .UR macro, which was
	undefined anyway.
	* man/dpkg-statoverride.8: Likewise.
	* man/dpkg-query.1: Likewise. Remove .T macro cruft.

2007-11-19  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl: Use %dep_field_type for the union option
	to Dpkg::Deps::parse, and use capit() to normalize the field names,
	instead of hardcoding them.

2007-11-19  Guillem Jover  <guillem@debian.org>

	* pkg-deb/build.c (arbitrary_fields): Add Package-Type,
	Subarchitecture, Kernel-Version and Installer-Menu-Item.
	* scripts/dpkg-scanpackages.pl (@fieldpri): Likewise.
	(%field_case): Add type argument.
	(usage): Document --type argument, and mark --udeb as obsolete.
	* man/dpkg-scanpackages.1: Likewise.
	* scripts/dpkg-gencontrol.pl: Parse Package-Type, Subarchitecture,
	Kernel-Version and Installer-Menu-Item from control file binary
	stanza. Warn if udeb specific fields are used on non-udeb packages.
	Add package with proper extension to the files list file.
	(@control_fields): Add Package-Type, Subarchitecture, Kernel-Version
	and Installer-Menu-Item.
	($package_type): New variable.
	* scripts/dpkg-genchanges.pl: Ignore Package-Type, Subarchitecture,
	Kernel-Version and Installer-Menu-Item fields.
	* scripts/dpkg-source.pl: Likewise.

2007-11-15  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Arch.pm (read_cputable): Force a sane input record
	separator.
	(read_ostable): Likewise.
	(read_triplettable): Likewise.

2007-11-04  Guillem Jover  <guillem@debian.org>

	* scripts/Makefile.am (clean): Set PERL5LIB to force use of shipped
	modules instead of system ones.

2007-11-04  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-architecture.pl: Move host and build arch detection
	to ...
	* scripts/Dpkg/Arch.pm (get_host_arch): ... here.
	(get_build_arch, get_gcc_host_gnu_type): Likewise. New function.

2007-11-04  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-architecture.pl: Wrap long strings for die calls
	at less than 80 chars.

2007-11-04  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Arch.pm (debarch_to_gnutriplet): New function.
	(gnutriplet_to_debarch): Likewise.
	* scripts/dpkg-architecture.pl: Use debarch_to_gnutriplet and
	gnutriplet_to_debarch instead of nested calls to
	debtriplet_to_gnutriplet and debarch_to_debtriplet,
	debtriplet_to_debarch and gnutriplet_to_debtriplet.

2007-11-04  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-architecture.pl: Move setting of host and build arch
	variables after argument processing. Call list_arches from argument
	processing loop. Move architecture listing to ...
	(list_arches): ... here. New function.

2007-11-04  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Arch.pm (get_valid_arches): Return an array instead of
	printing the architectures.

2007-10-29  Frank Lichtenheld  <djpig@debian.org>

	* man/dpkg-query.1: Replace ' with \(aq in example.
	Reported by Daniel van Eeden <daniel_e -at- dds nl>
	* man/dpkg-source.1: Replace ' with \(aq in synopsis.

2007-10-18  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/controllib.pl (parsedep, showdep): Remove unused functions.
	(@pkg_dep_fields, @src_dep_fields): Move variables to ...
	* scripts/Dpkg/Deps.pm: ... here. New file.
	* scripts/t/400_Dpkg_Deps.t: New file.
	* scripts/dpkg-checkbuilddeps.pl: Adapted to use the new
	Dpkg::Deps module.
	* scripts/dpkg-source.pl: Likewise.
	* scripts/dpkg-scanpackages.pl: Likewise.
	* scripts/dpkg-gencontrol.pl: Likewise. Also gains new features
	such as automatic simplification of dependencies.
	* man/dpkg-gencontrol.1: Document the new behaviour with
	dependency fields.

2007-10-18  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/ErrorHandling.pm (report): New function.
	(warning, warnerror, failure, syserr, error, internerr, unknown)
	(usageerr): Use report instead of sprintf. Accept a format string
	with variable number of arguments. Fix all callers.
	(subprocerr): Use failure instead of die and sprintf. Accept a
	format string with variable number of arguments. Fix all callers.

2007-10-18  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-buildpackage.pl (mustsetvar): Pass $text to sprintf
	instead of _g.

2007-10-15  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Version.pm: Fix compare_versions to handle properly
	the >= cases (it was improperly handled like >> due to a bad regexp).
	* debian/rules: Include cputable ostable triplettable in
	build-tree so that they are available during make check (Dpkg.pm
	exports ".." as $pkgdatadir during tests).
	* scripts/dpkg-shlibdeps.pl (my_find_library): Avoid unwanted
	modification of @pkg_shlibs.

2007-10-14  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/Dpkg/Version.pm: Mark compare_versions as exportable.

2007-10-13  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/Shlibs.pm: Do not call textdomain.
	* scripts/Dpkg/Shlibs/Objdump.pm: Likewise.
	* scripts/Dpkg/Shlibs/SymbolFile.pm: Likewise.

2007-10-13  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gensymbols.pl: Use new Dpkg::Arch module.
	($host_arch): Initialize with get_host_arch instead of direct call to
	'dpkg-architecture'.

2007-10-12  Raphaël Hertzog  <hertzog@debian.org>

	* scripts/dpkg-shlibdeps.pl: Use get_host_arch from Dpkg::Arch.

2007-10-12  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl ($host_arch, get_host_arch, get_valid_arches)
	(@cpu, @os, %cputable, %ostable, %cputable_re, %ostable_re)
	(%debtriplet_to_debarch, %debarch_to_debtriplet, read_cputable)
	(read_ostable, read_triplettable, debtriplet_to_gnutriplet)
	(gnutriplet_to_debtriplet, debtriplet_to_debarch)
	(debarch_to_debtriplet, debwildcard_to_debtriplet)
	(debarch_eq, debarch_is): Move to ...
	* scripts/Dpkg/Arch.pm: ... here. New file.
	* scripts/Makefile.am (nobase_dist_perllib_DATA): Add 'Dpkg/Arch.pm'.
	* scripts/po/POTFILES.in: Add 'scripts/Dpkg/Arch.pm'.

	* scripts/controllib.pl: Use new Dpkg::Arch module.
	* scripts/dpkg-architecture.pl: Likewise.
	* scripts/dpkg-checkbuilddeps.pl: Likewise.
	* scripts/dpkg-genchanges.pl: Likewise.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise.

	* scripts/dpkg-architecture.pl: Do not require controllib.pl anymore.

2007-10-12  Frank Lichtenheld  <djpig@debian.org>

	* scripts/t/300_Dpkg_BuildOptions.t: New file.
	Leads to the following fixes:
	* scripts/Dpkg/BuildOptions.pm (parse): Add
	support for nocheck and make it actually work.
	(set): Really set DEB_BUILD_OPTIONS. Discovered
	by Daniel Shepler.

2007-10-12  Frank Lichtenheld  <djpig@debian.org>

	* man/dpkg.1 (AUTHORS): Remove some unnecessary markup.
	Allows reuse of one more msgid.

	* man/Makefile.am (update-po): New target to easily
	update the .pot and .po files. Uses po4a --force.

2007-10-11  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl ($warnable_error, $quiet_warnings): Remove
	variable declarations.
	(failure, syserr, error, internerr, warning, warnerror)
	(subprocerr): Remove functions.
	(unknown, usageerr): Move functions to ...
	* scripts/Dpkg/ErrorHandling.pm: ... here.
	(usageerr): Call usage from main::.
	(@EXPORT_OK): Add usageerr and unknown.

	* scripts/822-date.pl: Use Dpkg::ErrorHandling.
	* scripts/changelog/debian.pl: Likewise.
	* scripts/controllib.pl: Likewise.
	* scripts/dpkg-architecture.pl: Likewise.
	* scripts/dpkg-buildpackage.pl: Likewise.
	* scripts/dpkg-checkbuilddeps.pl: Likewise.
	* scripts/dpkg-distaddfile.pl: Likewise.
	* scripts/dpkg-genchanges.pl: Likewise.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-gensymbols.pl: Likewise.
	* scripts/dpkg-parsechangelog.pl: Likewise.
	* scripts/dpkg-shlibdeps.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise.

	* scripts/dpkg-buildpackage.pl ($warnable_error): Import from
	Dpkg::ErrorHandling instead of declaring as our.
	* scripts/dpkg-source.pl ($warnable_error, $quiet_warnings): Likewise.

	* scripts/822-date.pl: Do not require controllib.pl anymore.
	* scripts/dpkg-parsechangelog.pl: Likewise.
	* scripts/dpkg-shlibdeps.pl: Likewise.

2007-10-10  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/ErrorHandling.pm: Use Dpkg.
	($progname): Do not set nor declare it.

2007-10-10  Guillem Jover  <guillem@debian.org>

	* scripts/Dpkg/ErrorHandling.pm ($warnable_error): Set to 1 to match
	controllib.pl.

2007-10-10  Guillem Jover  <guillem@debian.org>

	* m4/arch.m4(_DPKG_ARCHITECTURE): Set PERL5LIB when calling
	dpkg-architecture.pl to use the shipped perl modules instead of
	the system ones.

2007-10-09  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gensymbols.pl: Use new Dpkg module. Do not declare
	nor initialize $version, $dpkglibdir and $progname anymore.

2007-10-09  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-source.pl (usage): -W is the default
	for quite some time already. Adapt the description of
	-W and -E.
	* scripts/dpkg-buildpackage.pl (usage): Likewise.
	* man/dpkg-source.1: Likewise.
	* man/dpkg-buildpackage.1: Likewise.

	* scripts/dpkg-buildpackage.pl: Add -z/-Z to
	passthrough opts (will be passed to dpkg-source).
	* man/dpkg-buildpackage.1: Document all options only passed to
	dpkg-source. -s[nsAkurKUR], -z, and -Z were missing.

	* scripts/dpkg-source.pl: Support a subset of
	wig&pen (aka Format: 2.0) on build:
	Use .orig.tar.(bz2|lzma) if they are available
	and no .gz can be found. Also let the user specify
	via -Z(gzip|bzip2|lzma) how files that need to be
	generated should be compressed. -z([1-9]|best|fast)
	can be used to specify the compression level
	to use.
	* man/dpkg-source.1: Change the rest of the man page to not contain
	any hardcoded .gz references. Document -Z and -z.

2007-10-08  Raphaël Hertzog  <hertzog@debian.org>
	    Frank Lichtenheld  <djpig@debian.org>

	Merge dpkg-shlibdeps-buxy branch.

	* scripts/Dpkg/ErrorHandling.pm: New file.
	* scripts/Dpkg/Gettext.pm: Likewise.
	* scripts/Dpkg/Path.pm: Likewise.
	* scripts/Dpkg/Shlibs.pm: Likewise.
	* scripts/Dpkg/Shlibs/Objdump.pm: Likewise.
	* scripts/Dpkh/Shlibs/SymbolFile.pm: Likewise.
	* scripts/Dpkg/Version.pm: Likewise.

	* scripts/dpkg-shlibdeps.pl: Add support for "symbols" files.
	* man/dpkg-shlibdeps.1: Document "symbols" files support.

	* scripts/dpkg-gensymbols.pl: New file.
	* man/dpkg-gensymbols.1: Likewise.

	* scripts/t/000_pod.t: New file.
	* scripts/t/100_Dpkg_Version.t: Likewise.
	* scripts/t/200_Dpkg_Shlibs.t: Likewise.
	* scripts/t/200_Dpkg_Shlibs/ld.so.conf: Likewise.
	* scripts/t/200_Dpkg_Shlibs/ld.so.conf_2: Likewise.
	* scripts/t/200_Dpkg_Shlibs/ld.so.conf.d/inf_recurse.conf: Likewise.
	* scripts/t/200_Dpkg_Shlibs/ld.so.conf.d/normal.conf: Likewise.
	* scripts/t/200_Dpkg_Shlibs/ld.so.conf.d/recursive.conf: Likewise.
	* scripts/t/200_Dpkg_Shlibs/objdump.glib-ia64: Likewise.
	* scripts/t/200_Dpkg_Shlibs/objdump.libc6-2.3: Likewise.
	* scripts/t/200_Dpkg_Shlibs/objdump.libc6-2.6: Likewise.
	* scripts/t/200_Dpkg_Shlibs/symbols.fake-1: Likewise.
	* scripts/t/200_Dpkg_Shlibs/symbols.fake-2: Likewise.
	* scripts/t/200_Dpkg_Shlibs/symbols.include-1: Likewise.
	* scripts/t/200_Dpkg_Shlibs/symbols.include-2: Likewise.

2007-10-08  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.8~.

2007-10-08  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.7.

2007-10-08  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl: Do not replace substvars for build
	dependencies.

2007-10-08  Guillem Jover  <guillem@debian.org>

	* man/deb-control.5: Document Origin and Bugs fields.

2007-10-08  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gencontrol.pl: Refer to host architecture (instead of
	build) in error string, and quote architecture name.

2007-10-08  Frank Lichtenheld  <djpig@debian.org>,
            Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (debarch_is): Check if $alias is equal to
	$real or 'any' before mapping them to debtriplets.
	(debarch_to_debtriplet): Do not special case 'any' nor 'all'.
	(debarch_eq): Check if $a and $b are equal before mapping them to
	debtriplets.

2007-10-07  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-buildpackage.pl: Warn if run as root and $rootcommand
	has been specified. Error if run as non-root and $rootcommand is not
	found.

2007-10-07  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-buildpackage.pl (usage): Remove details about running
	fakeroot only if it's available.
	* man/dpkg-buildpackage.1: Document that fakeroot is now the default
	value in case -r is not specified.

2007-10-07  Frank Lichtenheld  <djpig@debian.org>
	    Marcel Toele  <mtoele@kern.nl>

	* scripts/dpkg-source.pl (handleformat): Include
	a trailing HT character in the diff labels if
	the filename contains spaces. Apparently this is
	standard but undocumented diff behaviour.

2007-09-30  Frank Lichtenheld  <djpig@debian.org>

	* man/deb-control.5: Remove obsolete sentence regarding the role of
	the Priority and Section field. They have nothing to do with the
	archive layout since woody.

	* man/dpkg-source.1: Remove superfluous [options] from -b command
	description.

2007-09-29  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-buildpackage.pl: Call checkversion()
	on version extracted from changelog. Since other
	program we call later will do the same there is
	really no reason not to fail early.

	* scripts/dpkg-buildpackage.pl (testcommand):
	Make the check more sensible. Instead of testing
	/usr/bin/$cmd, test `which $cmd`.

	* scripts/dpkg-buildpackage.pl (signfile): Call
	gpg with --utf8-strings since otherwise the key
	lookup fails with non-ASCII UTF8-encoded names.
	Since Debian changelogs should be UTF8 encoded,
	this is probably the more sane default. This
	will probably break if one uses a non-UTF8 locale
	and tries to give a uid on the commandline that
	contains non-ASCII chars. I think we can live with
	that.

2007-09-28  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-buildpackage.pl (withecho): Remove
	empty strings at the begin of the command array.
	These can be caused by e.g. an emtpy $rootcommando.
	It is easiest to filter them out here.

2007-09-24  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-buildpackage.pl (signfile): Do not use absolute path
	for 'rm'.

2007-09-24  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-buildpackage.pl (usage): Fix typo
	s/dpkg-genchangs/dpkg-genchanges/.

2007-09-24  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-buildpackage.pl ($warnable_errors): Rename to ...
	($warnable_error): ... this, and declare as 'our'.

2007-09-24  Frank Lichtenheld  <djpig@debian.org>

	* man/dpkg-source.1: Rework documentation of -i and -I options to
	give clearer explanations and explain the differences between the
	two in syntax and semantics.

2007-09-24  Jari Aalto  <jari.aalto@cante.net>
            Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-source.pl: Allow use of -I
	without filename pattern and load a list
	of default patterns which is in effect as
	similar as possible to the default regexp
	of -i.
	* man/dpkg-source.1: Document new behaviour of -I option.

2007-09-23  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-buildpackage.pl: Add new option
	-j[<number>] that works like the make option of
	the same name. It will be passed to debian/rules in
	the MAKEFLAGS environment variable. Also the
	parallel=<n> DEB_BUILD_OPTIONS option will be honored
	and set correctly. The finally used value is determined by the
	following order: -j > DEB_BUILD_OPTIONS > MAKEFLAGS.
	Based on an idea by Robert Millan <rmh@aybabtu.com>.
	* scripts/Dpkg/BuildOptions.pm: Added. Support code
	for DEB_BUILD_OPTIONS handling by dpkg-buildpackage.
	* scripts/Makefile.am: Adapt.
	* man/dpkg-buildpackage.1: Document the new -j option.

2007-09-23  Jari Aalto  <jari.aalto@cante.net>

	* scripts/dpkg-source.pl ($diff_ignore_default_regexp): Add
	_MTN for monotone.

2007-09-20  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-sources.pl (version): Don't use
	printf if we don't need it, use print instead.

	* scripts/dpkg-buildpackage.sh (usage): Fix typo
	s/dpkg-genchangs/dpkg-genchanges/

	* scripts/Dpkg.pm: Make the regex for determining
	$progname more robust.

	* scripts/dpkg-buildpackage.sh: Move to...
	* scripts/dpkg-buildpackage.pl: Convert from
	Shell to Perl.
	* scripts/Makefile.am: Adapt to move.
	* scripts/po/POTFILES.in: Add dpkg-buildpackage.pl.

2007-09-18  Guillem Jover  <guillem@debian.org>

	* lib/mlib.c (checksubprocerr): Warn instead of erroring out in case
	of receiving a signal and having been asked to only warn.

2007-09-18  Guillem Jover  <guillem@debian.org>

	* src/remove.c (deferred_remove): Remove duplicate nested conditional,
	and move its contents to the outer one.

2007-09-14  Brian M. Carlson  <sandals@crustytoothpaste.ath.cx>

	* src/remove.c (deferred_remove): Store the previous package status
	when calling '<prerm> remove' and pass it to push_cleanup.
	* src/cleanup.c (cu_prermremove): Restore previous stored status if
	the '<postinst> abort-remove' call succeeds.

2007-09-08  Guillem Jover  <guillem@debian.org>

	* man/dpkg-scanpackages.1: Document that gzipped files are also used
	by apt.

2007-09-08  A. Costa  <agcosta@gis.net>

	* man/dpkg-deb.1: Fix typo ('seperated' -> 'separated').
	* man/start-stop-daemon.8: Fix typo ('themself' -> 'themselves').

2007-09-08  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-buildpackage.sh: Use fakeroot, if present, as default
	value for the '-r' option.

2007-09-06  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl: Stop recognizing the obsolete Optional
	field.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise.

2007-09-06  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-name.sh: Avoid escaped quotes messing with syntax
	highlighting by using $() instead of backticks.
	* scripts/dpkg-buildpackage.sh: Likewise.

2007-09-06  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl ($host_arch): Do not declare as 'our'.
	* scripts/dpkg-gencontrol.pl ($host_arch): Likewise.

2007-09-06  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl (%fieldimps): Remove unused variable.
	* scripts/dpkg-gencontrol.pl (%fieldimps): Likewise.
	* scripts/dpkg-source.pl (%fieldimps): Likewise.
	* scripts/controllib.pl (%fieldimps): Switch from 'our' to 'my'.

2007-09-06  Guillem Jover  <guillem@debian.org>

	* man/dpkg-scanpackages.1: Replace gzip with bzip2 as the requirement
	for compressed Packages files for apt.

2007-09-06  Guillem Jover  <guillem@debian.org>

	* scripts/822-date.pl: Add $dpkglib into @INC, needed by the
	controllib.pl require.

2007-09-06  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.7~.

2007-09-05  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.6.

2007-09-05  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gencontrol.pl: Properly override Homepage field from
	binary package stanzas.

2007-08-31  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (arbitrary_fields): Add Tag.
	* scripts/dpkg-genchanges.pl: Ignore Tag field.
	* scripts/dpkg-gencontrol.pl: Parse Tag from binary package stanza.
	(@control_fields): Add Tag.
	* scripts/dpkg-scanpackages.pl (@fieldpri): Add Tag.
	* scripts/dpkg-source.pl: Ignore Tag field from binary package stanza.
	* man/deb-control.5: Document Tag field.
	* man/dpkg-query.1: Document Tag as a recognized field.

2007-08-31  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl: Ignore Vcs-Browser, Vcs-Arch, Vcs-Bzr,
	Vcs-Cvs, Vcs-Darcs, Vcs-Git, Vcs-Hg, Vcs-Mtn and Vcs-Svn fields
	from control file source stanza.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-source.pl: Parse them instead.
	(@dsc_fields): Add them here.

2007-08-31  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl: Do not leave unknown fields unwarned
	and explicitly ignore all known ones from control file source
	package stanza.

2007-08-30  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl: Ignore XB- fields instead of XC- fields
	from control file binary package stanzas.

2007-08-28  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Fix regression introduced on commit
	from 2007-08-08, which was producing a warning due to usage of
	uninitialized variables.

2007-08-28  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gencontrol.pl: Add comments about the second pass
	parsing for dependency fields. Remove handling of uninteresting fields
	in the second pass parsing.

2007-08-24  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gencontrol.pl: Allow a package stanza to override the
	Homepage field from the source stanza.

2007-08-20  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (arbitrary_fields): New variable.
	(known_arbitrary_field): New function.
	(do_build): Call known_arbitrary_field to not warn on known arbitrary
	fields.
	* scripts/dpkg-genchanges.pl: Ignore Homepage field.
	* scripts/dpkg-gencontrol.pl: Parse Homepage from source package
	stanza.
	(@control_fields): Add Homepage.
	* scripts/dpkg-scanpackages.pl (@fieldpri): Add Homepage.
	* scripts/dpkg-source.pl: Parse Homepage from source package stanza.
	(@dsc_fields): Add Homepage.
	* man/deb-control.5: Document Homepage field.
	* man/dpkg-query.1: Document Homepage as a recognized field.

2007-08-18  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-divert.pl (infol): Check if parameters are defined
	before using them. Use defined instead of length to check for undef
	variables.

2007-08-14  Guillem Jover  <guillem@debian.org>

	* lib/parsehelp.c (parseerr): Switch from ternary operator to compose
	a string to a conditional call to the function with two different
	strings, making life easier for translators.
	* src/archives.c (tarobject): Likewise.
	* src/query.c (searchoutput): Switch from a loop with two iterations
	and ternary operators to compose strings to a conditional with two
	sequential calls with different strings, making life easier for
	translators.

2007-08-14  Guillem Jover  <guillem@debian.org>

	* dpkg-split/main.c (rerr): Adjust string so that it gets merged by
	gettext with a similar one.

2007-08-14  Guillem Jover  <guillem@debian.org>

	* src/archives.c (linktosameexistingdir): Mark strings for translation.

2007-08-11  Ian Jackson  <iwj@ubuntu.com>

	* src/archives.c (linktosameexistingdir): New function.
	(tarobject): Call linktosameexistingdir if the tarball and the on-disk
	files are symlinks and ignore the symlink if it returns true.

2007-08-08  Ian Jackson  <iwj@ubuntu.com>

	* scripts/update-alternatives.pl: In the case where the slave is
	inapplicable do not attempt to create the slave link before
	removing it again.

2007-08-08  Guillem Jover  <guillem@debian.org>

	* src/configure.c (deferred_configure): Do not print a new line
	if maintainer_script_installed returned true.

2007-08-08  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (do_build): Use NULL instead of '(char *)0'.
	* dpkg-deb/extract.c (movecontrolfiles, extracthalf): Likewise.
	* dpkg-deb/info.c (cu_info_prepare, info_prepare): Likewise.
	* src/cleanup.c (cu_prermupgrade, cu_prermdeconfigure)
	(cu_prerminfavour, cu_preinstverynew, cu_preinstnew)
	(cu_preinstupgrade, cu_postrmupgrade, cu_prermremove): Likewise.
	* src/configure.c (deferred_configure, suspend): Likewise.
	* src/help.c (maintainer_script_alternative)
	(ensure_pathname_nonexisting): Likewise.
	* src/processarc.c (process_archive): Likewise.
	* src/remove.c (deferred_remove, removal_bulk_remove_files)
	(removal_bulk_remove_configfiles): Likewise.

2007-08-08  Guillem Jover  <guillem@debian.org>

	* src/cleanup.c (cu_prermdeconfigure): Split call to
	maintainer_script_installed depending on the conflictor variable.
	* src/packages.c (dependencies_ok): Remove comment stating that
	Breaks needs to be implemented.
	* src/depcon.c (depisok): Likewise. Remove return at the beginning
	of the function checking for a Breaks dependency, that was
	efectively making it a no-op in that case.
	* src/processarc.c (process_archive): Fix indentation. Split calls
	in deconfigure code to printf and maintainer_script_installed
	depending on the removing variable.

2007-08-07  Guillem Jover  <guillem@debian.org>

	* src/query.c (listpackages): Instead of allocating an additional
	packages array with room for the the current amount of packages,
	sort the existing one, and print the packages matching the pattern,
	which fixes segfaults when the resulting array was bigger than the
	current amount of packages.
	(showpackages): For each package show it only once it matches any
	of the patterns, so we avoid duplicated results.

2007-08-07  Ian Jackson  <iwj@ubuntu.com>

	* man/deb-control.5: Document Breaks field.
	* man/dpkg-query.1: Document Breaks as a recognized field.
	* man/dpkg.1: Add description of '--force-breaks'.
	* scripts/controllib.pl (@pkg_dep_fields): Add 'Breaks'.
	* scripts/dpkg-genchanges.pl: Ignore Breaks field.
	* scripts/dpkg-source.pl: Likewise.
	* src/archives.c (try_remove_can): Rename to ...
	(try_deconfigure_can): ... this. Generalize dependency force check
	by taking a function as argument. Store the possible package removal
	which caused the deconfiguration in the xinfo member of the package
	to be deconfigured.
	(try_remove_can): New function.
	(check_breaks): Likewise.
	* src/archives.h (check_breaks): New prototype.
	* src/cleanup.c (cu_prermdeconfigure): Handle case when argv[1]
	might be 0, if deconfigure was due to Breaks.
	* src/configure.c (deferred_configure): Call breakses_ok.
	* src/depcon.c (depisok): Add Breaks support.
	* src/help.c (force_breaks): New function.
	* src/main.c (fc_breaks): New variable.
	(forceinfo): Add 'breaks' as a supported option for '--force-...'.
	* src/main.h (struct perpackagestate): Add xinfo member.
	(fc_breaks): New variable definition.
	(breakses_ok): New prototype.
	(force_depends): Likewise.
	* src/packages.c (breaks_check_one): New function.
	(breaks_check_target): Likewise.
	(breakses_ok): Likewise.
	* src/processarc.c (process_archive): Check for Breaks dependencies,
	instead of bailing out if field found. Distinguish between deconfigure
	due to a removal due to Conflicts or Depends, and deconfigure due to
	an installation due to Breaks. Run the deconfiguration of each
	package to be deconfigured once, instead of once per each conflicting
	package being removed.

2007-07-31  Ian Jackson  <iwj@ubuntu.com>

	* src/archives.c (quote_filename): Change formatting to match the
	rest of the file (tab -> 2 spaces).

2007-07-25  Guillem Jover  <guillem@debian.org>

	* scripts/changelog/debian.pl: Switch from 'dpkg-gettext.pl' to
	Dpkg::Gettext.

2007-07-22  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gettext.pl: Move ...
	* scripts/Dpkg/Gettext.pm: ... here. Add a package statement.
	Fix all users.
	* scripts/Makefile.am (dist_pkglib_SCRIPTS): Remove 'dpkg-gettext.pl'.
	(nobase_dist_perllib_DATA): Add 'Dpkg/Gettext.pm'.

	* scripts/822-date.pl: Do not push $dpkglibdir into @INC anymore.
	* scripts/cleanup-info.pl: Likewise.
	* scripts/controllib.pl: Likewise.
	* scripts/dpkg-divert.pl: Likewise.
	* scripts/dpkg-scansources.pl: Likewise.
	* scripts/dpkg-statoverride.pl: Likewise.
	* scripts/install-info.pl: Likewise.
	* scripts/update-alternatives.pl: Likewise.

2007-07-22  Guillem Jover  <guillem@debian.org>

	* scripts/cleanup-info.pl: Use new Dpkg module, and remove variable
	declarations already present in the module.
	* scripts/controllib.pl: Likewise.
	* scripts/dpkg-architecture.pl: Likewise.
	* scripts/dpkg-checkbuilddeps.pl: Likewise.
	* scripts/dpkg-distaddfile.pl: Likewise.
	* scripts/dpkg-divert.pl: Likewise.
	* scripts/dpkg-genchanges.pl: Likewise.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-parsechangelog.pl: Likewise.
	* scripts/dpkg-scanpackages.pl: Likewise.
	* scripts/dpkg-scansources.pl: Likewise.
	* scripts/dpkg-shlibdeps.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise.
	* scripts/dpkg-statoverride.pl: Likewise.
	* scripts/install-info.pl: Likewise.
	* scripts/update-alternatives.pl: Likewise.
	* scripts/822-date.pl: Likewise.
	* changelog/debian.pl: Likewise.

	* scripts/controllib.pl (init_substvars): Remove comment about
	$version needing to be a global variable set elsewhere.

	* scripts/dpkg-scanpackages.pl: Remove $0 mangling.
	(version, usage): Use $progname instead of $0.
	* scripts/dpkg-statoverride.pl: Likewise.
	* scripts/install-info.pl: Likewise.
	* scripts/dpkg-divert.pl: Likewise.
	(quit, badusage): Use $progname instead of $0.
	* scripts/update-alternatives.pl: Likewise.
	* scripts/dpkg-scansources.pl ($Me): Remove declaration.
	(xwarndie_mess, version, usage): Use $progname instead of $Me.

2007-07-21  Guillem Jover  <guillem@debian.org>

	* m4/perl.m4 (DPKG_PROG_PERL): Add support for user overridable
	PERL_LIBDIR variable, autodetected from the system installation.
	* scripts/Makefile.am (perllibdir): New variable.
	(nobase_dist_perllib_DATA): Likewise.
	(install-data-hook): New target.
	* scripts/Dpkg.pm: New file.

2007-07-18  Guillem Jover  <guillem@debian.org>

	* man/cleanup-info.8: Unify author and copyright information
	formatting.
	* man/deb-substvars.5: Likewise.
	* man/dpkg-checkbuilddeps.1: Likewise.
	* man/dpkg-deb.1: Likewise.
	* man/dpkg-divert.8: Likewise.
	* man/dpkg-name.1: Likewise.
	* man/dpkg-query.1: Likewise.
	* man/dpkg-split.1: Likewise.
	* man/dpkg-statoverride.8: Likewise.
	* man/install-info.8: Likewise.
	* man/update-alternatives.8: Likewise.

2007-07-18  Guillem Jover  <guillem@debian.org>

	* man/dpkg.1: Split independent options.
	* man/dpkg-buildpackage.1: Likewise.
	* man/dpkg-genchanges.1: Likewise.
	* man/dpkg-source.1: Likewise.

2007-07-18  Guillem Jover  <guillem@debian.org>

	* man/dpkg-buildpackage.1: Remove ', and' leftover from man page split.
	Substitute 'FILES' with 'SEE ALSO'.

2007-07-18  Guillem Jover  <guillem@debian.org>

	* man/dpkg-deb.1: Remove space before ellipsis in parameters.
	* man/dpkg-query.1: Likewise.
	* man/update-alternatives.8: Likewise.
	* man/dpkg.1: Likewise. Use commas instead if pipes to separate
	alternative options. Remove redundant preceding 'dpkg' from options.

2007-07-18  Guillem Jover  <guillem@debian.org>

	* man/dpkg.1: Fix italics and bold usage.
	* man/dpkg-divert.8: Likewise.
	* man/dpkg-buildpackage.1: Likewise.

2007-07-10  Frank Lichtenheld  <djpig@debian.org>

	* man/dpkg.1, man/dpkg-query.1, man/dpkg-deb.1: Synchronise usage
	information between these three man pages. Also fix some formatting
	oddities and small mistakes.

2007-07-04  Frank Lichtenheld  <djpig@debian.org>

	* man/Makefile.am (uninstall-local): New target to remove the
	translated man pages. Detected with the help of 'make distcheck'.

2007-07-03  Frank Lichtenheld  <djpig@debian.org>

	* configure.ac: Bump version to 1.14.6~.

	* configure.ac: Release 1.14.5.

2007-07-02  Frank Lichtenheld  <djpig@debian.org>

	* COPYING: Update to current version of GPL v2
	text. Updates FSF address and LGPL name.

2007-07-01  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-source.pl: Warn that newly created empty files are
	not currently represented in the diff.

2007-07-01  Ian Jackson  <ian@davenant.greenend.org.uk>

	* scripts/dpkg-source.pl: Don't remove setgid bits
	on directories when extracting the .orig tarball
	since the user might prefer to have them. Also don't
	manually override user and group for extracted
	directories. Instead we will take tar take of most
	of that.
	(extracttar): Explicetly specify --no-same-owner
	and --no-same-permissions. They are default anyway
	for non-root users, but no need to handle the source
	differently (i.e. more carelessly) if working as root.
	Since tar still insists on honoring the file permissions in the
	tar ball, fix them up so that they match what the user would
	expect according to his umask.

2007-06-13  Guillem Jover  <guillem@debian.org>

	* man/dpkg-source.1: Remove section describing few dpkg-gncontrol
	options.

2007-06-12  Jiří Paleček  <jpalecek@web.de>

	* dpkg-shlibdeps.pl: Support colon separated list of paths in the
	ELF RPATH field.

2007-06-12  Guillem Jover  <guillem@debian.org>

	* man/dpkg-source.1: Fix explanation of '-b' option, remove a
	reference to checking for a missing empty string argument, and add a
	reference to '-sX' arguments affecting the behaviour.
	* man/install-info.8: Remove an additional space. Mark gzip in bold
	and remove redundant reference to GNU.

2007-06-12  Guillem Jover  <guillem@debian.org>

	* man/deb-substvars.5: Unify title header.
	* man/dpkg.1: Likewise.
	* man/dpkg-buildpackage.1: Likewise.
	* man/dpkg-checkbuilddeps.1: Likewise.
	* man/dpkg-deb.1: Likewise.
	* man/dpkg-divert.8: Likewise.
	* man/dpkg-scanpackages.1: Likewise.
	* man/dpkg-scansources.1: Likewise.
	* man/dpkg-shlibdeps.1: Likewise.
	* man/dpkg-source.1: Likewise.
	* man/dpkg-statoverride.8: Likewise.
	* man/install-info.8: Likewise.
	* man/update-alternatives.8: Likewise.

2007-06-12  Guillem Jover  <guillem@debian.org>

	* man/dpkg-divert.8: Mark dpkg-* commands in bold.
	* man/dpkg-buildpackage.1: Likewise.
	* man/dpkg-source.1: Likewise.
	* man/dpkg-statoverride.8: Likewise.

2007-06-12  Guillem Jover  <guillem@debian.org>

	* man/dpkg-source.1: Reference deb-substvars instead of dpkg-substvars.
	* man/dpkg-genchanges.1: Likewise.
	* man/dpkg-gencontrol.1: Likewise.

2007-06-12  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-scanpackages.pl: Move check for existence of $override
	outside load_override. Move load_override after having filled the
	%packages information.
	(load_override): Assume $override is always defined.

2007-06-06  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl ($diff_ignore_default_regexp): Add '.shelf'.

2007-06-06  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl (%archadded): Move to an outer scope to
	avoid duped entries in the output Architecture field.

2007-05-24  Guillem Jover  <guillem@debian.org>

	* ostable: Add gnulp-linux.
	* triplettable: Add gnulp-linux-i386 to lpia mapping.

2007-05-24  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.5~.

2007-05-24  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.4.

2007-05-24  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (debarch_to_debtriplet): Match exactly 'any'
	or 'all', recognize again 'linux-<arch>', and do not accept unknown
	debtriplets.
	(debwildcard_to_debtriplet): New function.
	(debarch_is): Use debwildcard_to_debtriplet for the wildcard
	parameter.

2007-05-23  Guillem Jover  <guillem@debian.org>

	Revert commit on 2007-04-28 by Aaron M. Ucko <ucko@debian.org>.

	* scripts/dpkg-shlibdeps.pl: Trim down duplicated files from @libfiles
	only when passing it to dpkg-query instead.

2007-05-23  Kylan Robinson  <Kylan_Robinson@selinc.com>

	* scripts/dpkg-source.pl: Fix regex (/\.debian.tar/ ->
	/\.debian\.tar/).

2007-05-23  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl ($copy_required): New variable.
	($dumptardev, $dumptarino): Move declaration inside the block issues
	the stat call, and only compare them against $dsctardev and $dsctarino
	if the stat succeeded.

2007-05-21  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-statoverride.pl ($pat): Rename to ...
	($pattern): ... this. Fixes $pattern being an unused variable.
	($file): Move the declaration to its first usage in the for loop.

2007-05-15  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.4~.

2007-05-15  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.3.

2007-05-15  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-divert.pl (checkmanymodes): Change the error message to
	say 'commands' instead of 'modes'.
	* scripts/dpkg-statoverride.pl (CheckModeConflict): Likewise. Use
	gettext for the string.

2007-05-15  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (daemonize): Use _exit instead of exit, to
	avoid side effects while the parents terminate.

2007-05-15  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (main): Move daemonizing code to ...
	(daemonize): ... here. New function. Fork twice.

2007-05-15  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Call fill_missing_slavepaths at the
	end of the 'install' conditional.
	(fill_missing_slavepaths): New function.

2007-05-15  Guillem Jover  <guillem@debian.org>

	* man/deb-control.5: Document comments in the control file.

2007-05-15  Guillem Jover  <guillem@debian.org>

	* man/install-info.8: Disambiguate the use of 'Info directory' with
	'Info dir file'.

2007-05-15  Kurt B. Kaiser  <kbk@shore.net>

	* man/install-info.8: Add missing commas, and information on the
	behaviour when no '--section' option is specifyied.

2007-05-14  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-divert.pl ($divertto, $package): Initialize to undef
	instead of an empty string.

2007-05-13  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (debarch_eq): Return 0 if
	debarch_to_debtriplet returns any undef value.
	(debarch_is): Likewise. As a side effect of changing to use arrays for
	the real and alias architectures, all parts of the triplet are now
	compared against 'any' as well.
	* scripts/dpkg-genchanges.pl: Remove redundant debarch_is being
	handled already in the grep.
	* scripts/dpkg-gencontrol.pl: Likewise.

2007-05-12  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (debian_arch_eq): Rename to ...
	(debarch_eq): ... this. Add prototype. Fix all callers.
	(debian_arch_is): Rename to ...
	(debarch_is): ... this. Add prototype. Fix all callers.

2007-05-12  Guillem Jover  <guillem@debian.org>

	* man/deb-substvars.5: Fix title to match the real section.

2007-05-11  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl ($manual): Rename to ...
	($mode): ... this. Fix all users.
	(read_link_group): Change gl() name from 'manflag' to 'update_mode',
	and badfmt() string from 'manflag' to 'invalid update mode'.

2007-05-11  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl ($mode): Rename to ...
	($action): ... this. Fix all users.
	(checkmanymodes): Rename to ...
	(check_many_actions): ... this. Fix all callers. Add prototype.
	Change the error message to say 'commands' instead of 'modes'.

2007-05-10  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl: Only use the %p2f values if defined.

2007-05-09  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.3~.

2007-05-09  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.2.

2007-05-09  Guillem Jover  <guillem@debian.org>

	* man/Makefile.am (install-data-local): Install the translated man
	pages from the srcdir.

2007-05-09  Guillem Jover  <guillem@debian.org>

	* Makefile.am (EXTRA_DIST): Add 'debian/dpkg-dev.lintian-overrides',
	'debian/dpkg.lintian-overrides', 'debian/dselect.lintian-overrides'
	and 'debian/source.lintian-overrides'.

2007-05-09  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Create the generic name symlinks
	when there's none, or when it differs to the current one.

2007-05-09  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl (config_message): Handle the case
	when @versions is empty. Return a negative value if there's nothing to
	do, 0 on success.
	(config_alternatives): Check for config_message exit value to decide
	to return instead of @versions being empty.

2007-05-09  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-buildpackage.sh: Remove check for variable being empty,
	as the path check quoted, thus removing the bashisms.

2007-05-08  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.2~.

2007-05-08  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.1.

2007-05-08  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.1~.

2007-05-08  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.14.0.

2007-05-08  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (read_cputable): Localize $_.
	(read_ostable): Likewise.
	(read_triplettable): Likewise.
	(parsedep): Check first for the negated architectures.
	* scripts/dpkg-checkbuilddeps.pl: Do not enable slurp mode globally.
	Use get_host_arch instead of directly dpkg-architecture.

2007-05-08  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl ($pkgdatadir): New variable.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise.
	* scripts/dpkg-checkbuilddeps.pl: Likewise.
	($dpkglibdir): Change to '..'.

2007-05-08  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Do not exit with an error on
	'--remove' with a non-existing link group file for now, to be
	consistent with the case when trying to remove an non-existing path.

2007-05-08  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Fix warning when executed w/o any
	option.

2007-05-08  Guillem Jover  <guillem@debian.org>

	* Makefile.am (EXTRA_DIST): Rename debian/pseudo-tags to
	debian/usertags.
	* man/Makefile.am (dist-hook): New target.
	(EXTRA_DIST): New variable.

2007-05-07  Guillem Jover  <guillem@debian.org>

	* ostable: Add gnueabi-linux.
	* triplettable: Add gnueabi-linux-arm to armel mapping.

2007-05-07  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (%debtriplet_to_debarch): New variable.
	(%debarch_to_debtriplet): Likewise.
	(split_gnu, split_debian): Remove functions.
	(debian_arch_fix, debian_arch_split): Likewise.
	(debian_to_gnu, gnu_to_debian): Likewise.
	(read_triplettable): New function.
	(gnutriplet_to_debtriplet, debtriplet_to_gnutriplet): Likewise.
	(debtriplet_to_debarch, debarch_to_debtriplet): Likewise.
	(get_valid_arches): Call read_cputable and read_ostable if @cpu or @os
	are empty. Use debtriplet_to_debarch instead of debian_arch_fix.
	(debian_arch_eq): Use debarch_to_debtriplet instead of
	debian_arch_split. Compare the whole Debian triplet.
	(debian_arch_is): Likewise.
	* scripts/dpkg-architecture.pl: Do not call the now internal functions
	read_cputable and read_ostable. Use debtriplet_to_gnutriplet,
	gnutriplet_to_debtriplet, debarch_to_debtriplet and
	debtriplet_to_debarch instead of debian_to_gnu, gnu_to_debian.
	* debian/archtable: Update comment to reflect the new Debian triplet.
	* cputable: Likewise.
	* ostable: Likewise. Include the ABI information in the Debian name.
	* triplettable: New file.
	* Makefile.am (dist_pkgdata_DATA): Add triplettable.

2007-05-04  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-architecture.pl: Use get_valid_arches instead of
	directly using @os and @cpu variables.
	($pkgdatadir): Change from a 'my' to an 'our' variable.
	(@cpu, @os, %cputable, %ostable, %cputable_re, %ostable_re,
	read_cputable, read_ostable, split_debian, debian_to_gnu,
	split_gnu, gnu_to_debian): Move to ...
	* scripts/controllib.pl: ... here.
	($pkgdatadir): Declare as 'our'.
	(get_valid_arches): New function.

2007-05-04  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Call read_link_group also in
	'install' mode, but do not exit nor print an error if the link goup
	file does not exist.

2007-05-02  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Move the ENOENT errno check from
	the if conditionals to the block body to avoid comparing against an
	undef value on the next elsif conditional.

2007-04-28  Aaron M. Ucko  <ucko@debian.org>

	* scripts/dpkg-shlibdeps.pl (unique_libfiles): New variable. Do not
	track duped libraries already on it.

2007-04-11  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-parsechangelog.pl: Use static and warnings. Declare
	variables with 'my'.
	* scripts/dpkg-scansources.pl: Likewise.
	* scripts/controllib.pl: Likewise. Globals with 'our'.
	* scripts/822-date.pl: Likewise.
	* scripts/dpkg-architecture.pl: Likewise.
	* scripts/dpkg-checkbuilddeps.pl: Likewise.
	* scripts/dpkg-distaddfile.pl: Likewise.
	* scripts/dpkg-genchanges.pl: Likewise.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-shlibdeps.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise.
	* scripts/controllib.pl (parsecdata): Use 'my' instead of 'local'.
	(subprocerr): Likewise.
	(debian_arch_fix): Likewise.
	* scripts/dpkg-architecture.pl (debian_to_gnu): Likewise.
	(gnu_to_debian): Likewise.
	* scripts/controllib.pl (getfowner): Remove redundant closures of
	STDIN.

2007-04-11  Guillem Jover  <guillem@debian.org>

	* man/Makefile.am (man.stamp): Use a stamp file for now until po4a
	supports them internally.
	(all-local): Depend on man.stamp.
	(clean-local): Remove the man.stamp file.

2007-04-11  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (@pkg_dep_fields): Reorder fields by
	importance.
	(set_field_importance): New function.
	(sort_field_by_importance): Likewise.
	(outputclose): Use sort_field_by_importance instead of direct sorting.
	* scripts/changelog/debian.pl (%fieldimps): Do not set directly, use
	set_field_importance instead.
	* scripts/dpkg-genchanges.pl: Likewise.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise.
	* scripts/changelog/debian.pl (@changelog_fields): New variable.
	* scripts/dpkg-genchanges.pl (@changes_fields): New variable.
	* scripts/dpkg-gencontrol.pl (@control_fields): New variable.
	* scripts/dpkg-source.pl (@dsc_fields): New variable.
	* scripts/dpkg-scanpackages.pl: Require 'controllib.pl'.
	(@pkg_dep_fields): Declare as 'our'.
	(@fieldpri): Reorder fields, use '@pkg_dep_fields' instead of
	hardcoded list.

2007-04-05  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (get_host_arch): New function.
	(findarch): Rename to ...
	(init_substvar_arch): ... this. Use get_host_arch to set the substvar.
	Fix all callers.
	(parsedep): Use get_host_arch instead of directly calling
	dpkg-architecture.
	* scripts/dpkg-genchanges.pl: Use '$host_arch' instead of '$arch'.
	(init_substvar_arch): Delay call until after init_substvars.
	* scripts/dpkg-gencontrol.pl: Likewise.

2007-04-03  Guillem Jover  <guillem@debian.org>

	* dpkg-genchanges.pl: Mark string for translation.

2007-04-03  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (warn): Rename to ...
	(warning): ... this, to avoid collisions with the perl builtin. Fix
	all users.

2007-04-03  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl: Use defined instead of length, when variables
	might be undefined.
	* scripts/update-alternatives.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise.
	* scripts/dpkg-genchanges.pl: Likewise.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-shlibdeps.pl: Likewise.

2007-04-03  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-checkbuilddeps.pl ($control): Remove redundant
	variable.

2007-04-03  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl (fieldimps): Add 'Uploaders'.

2007-03-25  Nicolas François  <nicolas.francois@centraliens.net>

	* m4/libs.m4: Fix typo (supoprt->support).

2007-03-23  Guillem Jover  <guillem@debian.org>

	* debian/pseudo-tags: Renamed to ...
	* debian/usertags: ... this. Updated with the usertags information.
	* debian/dpkg.docs: Install usertags instead of pseudo-tags.

2007-03-21  Jeffrey W. Baker  <jwbaker@acm.org>
            Guillem Jover  <guillem@debian.org>

	* src/archives.c (wanttoinstall): Use vdew_nonambig instead of
	vdew_never on versiondescribe.
	* src/configure.c (deferred_configure): Likewise.
	* src/query.c (list1package): Likewise.
	* dselect/pkgsublist.cc (packagelist::add): Likewise.
	* dselect/pkgtop.cc (packagelist::redraw1itemsel): Likewise.

2007-03-21  Guillem Jover  <guillem@debian.org>

	* dselect/main.cc: Remove duplicated included files <sys/types.h> and
	<sys/stat.h>. Move <fcntl.h> to the system block.

2007-03-21  Guillem Jover  <guillem@debian.org>

	* dselect/method.h: Fix typo in copyright year ('20001'-> '2001').

2007-03-21  Guillem Jover  <guillem@debian.org>

	* configure.ac (AM_GNU_GETTEXT_VERSION): Quote the argument.
	(AC_CHECK_HEADERS): Check for 'locale.h'.
	* lib/gettext.h: Updated file from gettext 0.16.1.

2007-03-21  Guillem Jover  <guillem@debian.org>

	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.16.1.

2007-03-20  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl ($diff_ignore_default_regexp): Add '.hg'.

2007-03-13  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (parsechangelog): Only binmode CDATA from the
	parent side of the opened pipe, on the child side binmode STDOUT.

2007-03-13  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-shlibdeps.pl: Use new style file handler references.

2007-03-13  Guillem Jover  <guillem@debian.org>

	* lib/compression.c (compress_cat): Support compress_type_lzma.
	* dpkg-deb/build.c (do_build): Likewise.
	* dpkg-deb/main.c (usage): Document that '-Z' now accepts lzma as well.
	(setcompresstype): Parse 'lzma' as compress_type_lzma.
	* man/dpkg-deb.1: Move '-z' to it's own OPTIONS entry. Document '-Z',
	and the new 'lzma' value.

2007-03-12  Guillem Jover  <guillem@debian.org>

	* man/dpkg-source.1: Split individual man pages to ...
	* man/deb-shlibs.5: ... here and ...
	* man/deb-substvars.5: ... here and ...
	* man/dpkg-buildpackage.1: ... here and ...
	* man/dpkg-distaddfile.1: ... here and ...
	* man/dpkg-genchanges.1: ... here and ...
	* man/dpkg-gencontrol.1: ... here and ...
	* man/dpkg-parsechangelog.1: ... here and ...
	* man/dpkg-shlibdeps.1: ... here.
	* man/Makefile.am (all-local): Do not make the symlinks anymore.
	(dpkg_source_aliases): Move to ...
	(dist_man_MANS): ... here.
	(man_MANS): Remove variable.
	(CLEANFILES): Likewise.

2007-03-12  Guillem Jover  <guillem@debian.org>

	* man/Makefile.am (dist_man_MANS): Add deb-override.5.
	* man/dpkg-scanpackages.1: Move override file information to ...
	* man/deb-override.5: ... here.

	* man/dpkg-scanpackages.1: Add a reference to deb-override.5.
	* man/dpkg-scansources.1: Likewise.

2007-03-12  Guillem Jover  <guillem@debian.org>

	* scripts/changelog/debian.pl: Fix call to outputclose by not passing
	anything to it.
	($varlistfile): Remove unused variable.

2007-03-12  Guillem Jover  <guillem@debian.org>

	* lib/dpkg.h (compression_type): Rename to ...
	(compress_type): ... this. Fix all users.
	(CAT): Rename to ...
	(compress_type_cat): ... this. Fix all users.
	(GZ): Rename to ...
	(compress_type_gzip): ... this. Fix all users.
	(BZ2): Rename to ...
	(compress_type_bzip2): ... this. Fix all users.

2007-03-06  Guillem Jover  <guillem@debian.org>

	* lib/compression.c (fd_fd_filter): New function, refactored. As
	a side effect the 'failed to exec' string gets unified, and all
	commands use oshite now.
	(decompress_cat): Use fd_fd_filter instead of the duped code.
	(compress_cat): Likewise.

2007-03-06  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-scanpackages.pl (usage): Documemt that the override
	file is now optional.
	(load_override): New function, refactored. Handle the case where
	'$override' is undefined.
	* man/dpkg-scanpackages.1: Mark the override argument as optional.

2007-03-06  Guillem Jover  <guillem@debian.org>

	* man/update-alternatives.8: Reorder EXAMPLES section.

2007-03-06  Guillem Jover  <guillem@debian.org>

	* man/cleanup-info.8: Unify the summary. Unify '--help' and
	'--version' descriptions. Remove unneeded quotes in section names.
	* man/update-alternatives.8: Likewise.
	* man/start-stop-daemon.8: Likewise.
	* man/dpkg-deb.1: Likewise.
	* man/dpkg-divert.8: Likewise.
	* man/dpkg-query.1: Likewise.
	* man/dpkg-name.1: Likewise.
	* man/dpkg-checkbuilddeps.1: Likewise.
	* man/dpkg-architecture.1: Likewise.
	* man/dpkg-split.1: Likewise.
	* man/dpkg-statoverride.8: Likewise.
	* man/dpkg-scanpackages.1: Likewise.
	* man/dpkg-scansources.1: Likewise.

	* man/dpkg-deb.1: Split option aliased names with ',' instead of '|'.
	* man/dpkg-name.1: Likewise.
	* man/dpkg-split.1: Likewise.
	* man/dpkg-query.1: Likewise.
	* man/start-stop-daemon.8: Likewise.

	* man/dpkg-divert.8: List each options in the OPTIONS section.
	* man/dpkg-scanpackages.1: Likewise.
	* man/start-stop-daemon.8: Likewise.

	* man/dpkg-divert.8: Remove redundant '<>' characters to delimit a
	replacable argument.
	* man/dpkg-statoverride.8: Likewise.

	* man/update-alternatives.8: Mark commands in examples as bold.
	* man/dpkg-architecture.1: Reorder sections. Indent examples.
	* man/dpkg-name.1: Do not specify in which programming language the
	program is written in.
	* man/dpkg-deb.1: Split '--extract' and '--vextract' options.

2007-02-28  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-checkbuilddeps.pl: Make getopt parse '--admindir'.
	($admindir): New variable.
	(usage): Document '--admindir'.
	(parse_status): The status argument is not optional anymore.
	* scripts/dpkg-shlibdeps.pl: Parse '--admindir'.
	($admindir): New variable.
	($shlibsppdir): Initialize it after parsing the arguments.
	(usage): Document '--admindir'.
	* scripts/dpkg-buildpackage.sh: Parse '--admindir', and document it in
	usage output. Pass it to dpkg-checkbuilddeps.
	* man/dpkg-source.1: Document new option '--admindir'.
	* man/dpkg-checkbuilddeps.1: Likewise.

2007-02-28  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl (usage): Use '$altdir' instead of
	hardcoding its value.

2007-02-28  Colin Watson  <cjwatson@ubuntu.com>

	* scripts/dpkg-gencontrol.pl: Add missing parenthesis in regular
	expression handling Origin, Bugs and Maintainer for control file
	fields.

2007-02-17  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl (checkstats): Take '$dscdir' as an explicit
	argument. Fix all callers.
	(checktype): Take '$dir', '$fn' and '$type' as explicit arguments. Fix
	all callers.

2007-02-17  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl: Check if '$alink' is defined before
	using '$aslavelinkcount{$alink}'. Only read_link_group if '$mode' is
	not 'install'.
	($dataread): Remove now unused variable.
	(read_link_group): New function (refactored).
	(find_best_version): Likewise.
	(display_link_group): Likewise.
	(list_link_group): Likewise.
	(config_all): Move exit to outside the function.

2007-02-17  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (parsecdata): Change CDATA to a reference
	taken from the arguments. Fix all callers.

2007-02-13  Guillem Jover  <guillem@debian.org>

	* src/archives.c (MAXCONFLICTORS): New macro.
	(conflictor): Use MAXCONFLICTORS instad of hardcoded value '20', and
	remove non-matching comments.
	(check_conflict): Exit with an error instead of an assert. Move part
	of the comment to the error message, remove the rest as non-matching.

2007-02-13  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/build.c (getfi): Exit with an error instead of an assert.

2007-02-13  Guillem Jover  <guillem@debian.org>

	* dpkg-deb/dpkg-deb.h (MAXFILENAME): New macro.
	* dpkg-deb/build.c (getfi): Use MAXFILENAME instead of the hardcoded
	value '2048'.

2007-02-13  Guillem Jover  <guillem@debian.org>

	* lib/compression.c (decompress_cat): Use BZ_IO_ERROR instead of
	Z_ERRNO for the error value returned by BZ2_bzerror.

2007-02-12  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-shlibdeps.pl: Move syserr:s to be or'ed after exec:s.

2007-02-12  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (outputclose): Change argument from a boolean
	to an optional filename argument. Fix all callers.
	(parsecontrolfile): Take '$controlfile' as an explicit argument.
	Fix all callers.
	(parsesubstvars): Take '$varlistfile' as an explicit argument.
	Fix all callers.
	(parsechangelog): Take '$changelogfile' as an explicit argument,
	'$changelogformat' and '$since' as optional arguments. Fix all
	callers.
	(setsourcepackage): Take '$v' as an explicit argument.

2007-02-11  Guillem Jover  <guillem@debian.org>

	* dselect/pkglist.h (packagelist::severalinfoblurb): Do not take a
	string argument. Fix all callers.
	* dselect/pkginfo.cc (packagelist::severalinfoblurb): Likewise.
	(packagelist::itd_relations): Capitalize and make whatinfo setting
	common and move it outside of the if block, and do not add the
	package name.
	(packagelist::itd_description): Likewise.
	(packagelist::itd_statuscontrol): Likewise.
	(packagelist::itd_availablecontrol): Likewise.
	* dselect/baselist.cc (baselist::itd_keys): Capitalize whatinfo string.
	* dselect/methlist.cc (methodlist::itd_description): Likewise and do
	not print the method name.

2007-02-11  Ian Jackson  <iwj@ubuntu.com>
	    Guillem Jover  <guillem@debian.org>

	* src/depcon.c (describedepcon): Use format arguments to make the
	strings l10n-friendlier.

2007-02-04  Julien Cristau  <jcristau@debian.org>

	* scripts/dpkg-source.pl ($diff_ignore_default_regexp): Add
	'.gitignore'.

2007-01-24  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl: Move substvar initializations to ...
	(init_substvars): ... here.

2007-01-24  Frank Lichtenheld  <djpig@debian.org>

	* scripts/822-date.pl: Convert the script to be a simple wrapper
	around 'date -R'.
	* man/822-date.1: 822-date is now deprecated. Document this fact in
	the man page.

2007-01-23  Sven Joachim  <sven_joachim@web.de>
	    Guillem Jover  <guillem@debian.org>

	* dselect/helpmsgs.cc (hlp_listkeys): Fix up and down keystrokes.
	(hlp_methkeys): Reorder up and down keystrokes.

2007-01-23  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl: Fix typo in variable name from $dirc to
	$dircreate, and append a "/" on each loop.

2007-01-16  Nicolas François  <nicolas.francois@centraliens.net>

	* configure.ac: There are no more Makefiles to generate in the
	man/ subdirectories.
	* man/C/: Move the manpages to the root of the man/ directory.
	* man/C/Makefile.am, man/po4a.mk: The languages makefiles are no
	more needed. Also remove the language directories.
	* man/Makefile.am: New build system.
	The goal of these changes is to simplify the build system (less
	files, less Makefiles, lower the depth of the file hierarchy).

2007-01-15  Ian Jackson  <iwj@ubuntu.com>

	* src/processarc.c (process_archive): Add a missing newline to a
	warning message.

2007-01-15  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gettext.pl: Remove duplicate 'use static'.
	* scripts/cleanup-info.pl: Use static and warnings.
	* scripts/dpkg-divert.pl: Likewise. Declare variables with 'my'.
	* scripts/dpkg-statoverride.pl: Likewise.
	* scripts/update-alternatives.pl: Likewise.

2007-01-12  Mark Rosenstand  <mark@borkware.net>

	* src/help.c (checkpath): Check for the value of the macro
	WITH_START_STOP_DAEMON instead of it being defined.

2007-01-11  Riku Voipio  <riku.voipio@iki.fi>
	    Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl: Move the getlogin and fowner initialization
	to ...
	(getfowner): ...here. New function.
	* scripts/dpkg-source.pl: Use getfowner() instead of @fowner.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-distaddfile.pl: Likewise.
	* scripts/dpkg-shlibdeps.pl: Likewise.

2007-01-10  Julian Gilbey  <jdg@polya.uklinux.net>

	* scripts/dpkg-buildpackage.sh: Allow '-b' to properly override a
	previously passed '-B'.

2007-01-09  Nicolas Francois  <nicolas.francois@centraliens.net>

	* man/C/dpkg-deb.1: Make the copyright match the one from the source.
	* man/C/dpkg-split.1: Likewise.

2007-01-09  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.14.0~.

2007-01-02  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.13.25.

2007-01-01  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-shlibdeps.pl (@librarypaths): Add '/emul/ia32-linux/lib'
	and '/emul/ia32-linux/usr/lib'.

2006-11-24  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl: Add lzma extracting support.
	(checkdiff): Likewise.
	(forkgzipread): Likewise.
	* lib/dpkg.h (LZMA): New macro.
	(compression_type): Add compress_type_lzma.
	* lib/compression.c (decompress_cat): Handle compress_type_lzma
	decompression.
	* dpkg-deb/dpkg-deb.h (DATAMEMBER_LZMA): New macro.
	(DATAMEMBER_COMPAT_LZMA): Likewise.
	* dpkg-deb/extract.c (extracthalf): Handle DATAMEMBER_LZMA and
	DATAMEMBER_COMPAT_LZMA members.

2006-11-24  Brendan O'Dea  <bod@debian.org>

	* scripts/controllib.pl (subprocerr): Require POSIX for WIFEXITED,
	WEXITSTATUS, WIFSIGNALED and WTERMSIG.

2006-11-24  Tomas Pospisek  <tpo_deb@sourcepole.ch>

	* man/C/update-alternatives.8: Document that it requires cooperation
	from all packages dealing with the same file.

2006-10-13  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.13.25~.

2006-10-13  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.13.24.

2006-10-13  Guillem Jover  <guillem@debian.org>

	* dselect/pkgdisplay.cc (relatestrings): Add a string for the Breaks
	field as it should match the enum debtype in 'lib/dpkg-db.h'.

2006-10-12  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.13.24~.

2006-10-12  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.13.23.

2006-10-06  Guillem Jover  <guillem@debian.org>

	* README.translators: Add references to the new scripts/po/ChangeLog
	file. State that the languages should be listed alphabetically in
	debian/changelog.

2006-09-29  Nicolas Francois  <nicolas.francois@centraliens.net>

	* man/C/dpkg-scansources.1: Fix a typo.

2006-09-27  Guillem Jover  <guillem@debian.org>

	* m4/compiler.m4: Add a new line at the end of the file, to cope with
	an autoreconf failure due to the new m4 1.4.7.

2006-09-27  Ian Jackson  <iwj@ubuntu.com>

	* dselect/pkgdepcon.cc (packagelist::resolvedepcon): Recognise the
	dep_breaks dependency type in the dependency and conflict resolution.

2006-08-10  Guillem Jover  <guillem@debian.org>

	* dselect/helpmsgs.cc: Replace the comment header about the file being
	autogenerated with a proper copyright and license one. Reindented.
	* dselect/helpmsgs.h: Likewise.

2006-08-08  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-architecture.pl (dpkglibdir): Set to '.' where
	controllib.pl is located.
	(pkgdatadir): Set to '..' where cputable and ostable are located.
	* m4/arch.m4 (_DPKG_ARCHITECTURE): New macro.
	(DPKG_CPU_TYPE): Use _DPKG_ARCHITECTURE instead of parsing cputable.
	(DPKG_OS_TYPE): Use _DPKG_ARCHITECTURE instead of parsing ostable.
	(DPKG_ARCHITECTURE): Use _DPKG_ARCHITECTURE instead of constructing
	the value from cpu_type and os_type.

2006-08-08  Ian Jackson  <iwj@ubuntu.com>

	* lib/dpkg-db.h (deptype): Add dep_breaks.
	* lib/fields.c (f_dependency): Bail out if the Breaks field has an
	alternative through a '|'.
	* lib/parse.c (fieldinfos): Add support for the Breaks field when
	parsing them as a depedency field.
	* src/depcon.c (describedepcon): Support displaying the Breaks
	relationship.
	(depisok): Ignore the Breaks field by adding dep_breaks to the assert
	and returning as succeeded.
	* src/processarc.c (process_archive): Print a message stating that
	current dpkg does not support the Breaks field. Do not bail out in
	case the Breaks references packages to ignore for dependency handling.
	* src/packages.c (dependencies_ok): Add a place holder comment to
	be replaced by the code to prevent configuration of Broken packages.

2006-08-05  Nicolas Francois  <nicolas.francois@centraliens.net>

	* man/C/dpkg-architecture.1: Remove linux-alpha from the architecture
	wildcard examples, and fix a formatting issue.

2006-08-05  Nicolas Francois  <nicolas.francois@centraliens.net>

	* man/C/dpkg-source.1: Typo fix.
	* man/C/dpkg-architecture.1: Likewise.

2006-08-02  Nicolas Francois  <nicolas.francois@centraliens.net>

	* man/C/dpkg.1: Typo fix.
	* man/C/dpkg-divert.8: Likewise.
	* man/C/deb-control.5: Likewise.

2006-07-29  Nicolas Francois  <nicolas.francois@centraliens.net>

	* man/C/dpkg-architecture.1: Typo fix.
	* man/C/dpkg-statoverride.8: Likewise.

2006-07-29  Nicolas Francois  <nicolas.francois@centraliens.net>

	* man/C/dpkg-name.1: Typo fix.

2006-07-27  Nicolas Francois  <nicolas.francois@centraliens.net>

	* man/C/cleanup-info.8: Typo fix.
	* man/C/deb.5: Likewise.
	* man/C/dpkg-scanpackages.1: Likewise.
	* man/C/dpkg-scansources.1: Likewise.

2006-07-23  Helge Kreutzmann  <debian@helgefjell.de>

	* man/C/822-date.1: Fix the manpage's modification date.

2006-07-23  Nicolas Francois  <nicolas.francois@centraliens.net>

	* man/C/start-stop-daemon.8: Typo fix.

2006-07-07  Nicolas François  <nicolas.francois@centraliens.net>

	* dpkg-deb/build.c: Specify --null before the -T option to avoid
	the "tar: -: file name read contains nul character" warning.

2006-07-22  Helge Kreutzmann  <debian@helgefjell.de>

	* man/C/start-stop-daemon.8: Typo fix.
	* man/C/update-alternatives.8: Likewise.

2006-06-21  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.13.23~.

2006-06-21  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.13.22.

2006-06-21  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (signal_str, schedule_str): Move
	variables inside ...
	(parse_options): ... here.

2006-06-21  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (umask_value): New variable.
	(do_help): Print information about the new '--umask' option.
	(parse_umask): New function.
	(parse_options): Parse the new option using parse_umask.
	(main): Set umask, and do not set for the background case if we set
	it previously.
	* man/C/start-stop-daemon.8: Document the new '--umask' option.

2006-06-21  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (usageerr): Do not mark "%s: %s" for
	translation.
	* scripts/changelog/debian.pl: Remove "or argument" from the
	"unknown option" string to merge it with other similar ones.
	* scripts/dpkg-distaddfile.pl: Quote '%s' in the "unknown option"
	string.
	* scripts/dpkg-source.pl: Likewise.
	* scripts/cleanup-info.pl (ulquit): Print the program name.
	Change all callers to not print the program name, and modify the
	strings to merge them with similar ones.
	* scripts/dpkg-divert.pl: Change strings referring to command line
	argument to use '%s' instead of such argument, thus merging them.
	(quit): Do not mark the string for translation. Do not hardcode the
	program name and use '$0' instead.
	(badusage): Likewise. Make it call usage.
	* scripts/dpkg-statoverride.pl: Likewise.
	* scripts/update-alternatives.pl: Likewise.
	* scripts/install-info.pl: Call quit instead of die and do not print
	the program name. Prepend "unable to" to most of those strings to
	merge them with similar ones. Fix other strings to merge them.
	(ulquit): Make it call quit instead of die and do not print the
	program name.
	(checkpipe): Likewise.
	(quit): New function.
	* lib/fields.c (f_dependency): Make strings use '%s' instead of
	hardcoded character, to merge both.
	* lib/dbmodify.c (createimptmp): Quote and increase to 255 the
	parameter '%.250s' to merge the string with the other ones.

2006-06-18  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-buildpackage.sh: Fix testing
	the content of $signinterface by moving the
	test to a place where it can actually fail.
	Give the user a correct warning message about
	what we do (i.e. defaulting to pgp style).

2006-06-17  Guillem Jover  <guillem@debian.org>

	* man/C/dpkg-architecture.1: Clarify new -e and -i options, give
	backward compatibility information and add some examples.

2006-06-17  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-source.pl: Fix typo in regex that caused
	spurious warnings for user defined fields even though they
	used the correct XB- syntax.

2006-06-16  Robert Luberda  <robert@debian.org>

	* man/C/dpkg-deb.1: Fix typo ("--show-format" -> "--showformat").

2006-06-16  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (parsechangelog): Move substvar initialization
	to ...
	(init_substvars): ... here. New function. Move the dpkg substvars
	initialization to this function.
	* scripts/dpkg-source.pl: Call init_substvars after parsechangelog.
	* scripts/dpkg-genchanges.pl: Replace setting dpkg substvars with
	init_substvars. If the version field or the one forced from command
	line differs from the substvar, add the later to the output Source
	field inside parenthesis.
	* scripts/dpkg-gencontrol.pl: Likewise.

2006-06-16  Andrew Ferrier  <andrew@new-destiny.co.uk>
	    Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl (usage): Clarify the legend for the
	help text.

2006-06-16  Guillem Jover  <guillem@debian.org>

	* scripts/update-alternatives.pl (config_message): Print '--config'
	listing layout evenly spaced.

2006-06-07  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-scansources.pl: Remove invalid comment mentioning
	documentation being after __END__.

2006-06-07  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl ($diff_ignore_default_regexp): Add
	'.bzrtags'.

2006-06-04  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.13.22~.

2006-06-04  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.13.21.

2006-06-04  Ian Jackson  <ian@davenant.greenend.org.uk>

	* src/depcon.c (foundcyclebroken): Replace possi->ed argument to
	findbreakcyclerecursive call with dependedon.
	(findbreakcyclerecursive): Remove the last foundcyclebroken call
	which was wrongly using the unrelated provider->installed.depended
	linked list. Remove findbreakcyclerecursive call which may lead to
	infinite recursion.

2006-06-04  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-parsechangelog.pl: Pass forward the '-l' option to
	the format parser.
	* scripts/changelog/debian.pl: Add '-l' option and set $changelogfile.
	(usage): Document the new '-l' option.
	(clerror): Print $changelogfile instead of 'changelog'.
	(clwarn): Likewise.

2006-06-02  Guillem Jover  <guillem@debian.org>

	* scripts/install-info.pl: Do not use English non-essential module.

2006-06-02  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-shlibdeps.pl (@librarypaths): Add '/lib32' and
	'/usr/lib32/'.

2006-06-02  Guillem Jover  <guillem@debian.org>

	* src/query.c (setaction): Print also the short command line action.
	* src/main.c (setaction): Likewise.
	* dpkg-deb/main.c (setaction): Likewise.
	* dpkg-split/main.c (setaction): Likewise.

2006-05-31  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.13.21~.

2006-05-31  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.13.20.

2006-05-31  Koblinger Egmont  <egmont@uhulinux.hu>

	* src/processarc.c (process_archive): Do not pass to parsedb
	pdb_weakclassification, so that the Section and Priority fields
	gets updated with new packages.

2006-05-31  Julian Gilbey  <jdg@debian.org>

	* scripts/changelog/debian.pl: Remove duped string ' , at changelog '.

2006-05-31  Guillem Jover  <guillem@debian.org>

	* src/enquiry.c (cmpversions): Prefix the bad syntax error with a
	'dpkg: ' and print the bogus version string.

2006-05-25  Guillem Jover  <guillem@debian.org>

	* scripts/install-info.pl: Exit if the lock file already exists.
	This change was lost when doing the i18n of the scripts.

2006-05-25  Ben Pfaff  <blp@cs.stanford.edu>

	* scripts/install-info.pl: Use %! instead if $! to check for EEXIST.
	* man/C/install-info.8: Correct default info directory for '--infodir'.

2006-05-23  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (parsechangelog): Do not strip the epoch from
	the source:Upstream-Version substvar.
	* man/C/dpkg-source.1: Document that the source:Upstream-Version
	substvar can have an epoch.

2006-05-23  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (usageerr): Use usage instead of
	usageversion.
	* scripts/dpkg-statoverride.pl (UsageVersion): Rename to ...
	(usageversion): ... this.
	* scripts/dpkg-parsechangelog.pl (usageversion): Split into usage
	and version functions. Print to stdout. Standarize output format.
	Add '--help' and '--version'.
	* scripts/dpkg-shlibdeps.pl: Likewise.
	* scripts/dpkg-distaddfile.pl: Likewise.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-genchanges.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise.
	* scripts/changelog/debian.pl: Likewise.
	* scripts/dpkg-statoverride.pl: Likewise. Basename $0.
	* scripts/dpkg-architecture.pl: Likewise. Do not basename $0,
	use $progname instead.
	* scripts/dpkg-checkbuilddeps.pl: Use $progname instead of $me.
	(me): Remove variable.
	(usage): Standarize output format. Print to stdout. Add '-h' option.
	* scripts/dpkg-buildpackage.sh (usageversion): Split into
	showversion and usage functions. Print to stdout. Standarize output
	format. Add '--help' and '--version'.
	(version): Rename variable to ...
	(changesversion): ... this, otherwise there was no program version
	shown on output.
	* scripts/dpkg-scanpackages.pl: Basename $0.
	(options): Pass a sub to the help option calling usage and exit.
	Add '--version'.
	(usage): Switch variable to a function. Print to stdout. Standarize
	output.
	(version): New function.
	* scripts/dpkg-scansources.pl (Version): Rename variable to ...
	(version): ... this (so it will be automaitcally updated by the
	Makefile).
	(Option_spec): Pass \&usage to help option and \&version to version.
	(Usage): Remove variable.
	(version): New function.
	(usage): Move xwarn call to where the actual check is made. Replace
	the die call with a printf and an exit.
	* scripts/dpkg-name.sh: Standarize output format.
	* scripts/dpkg-divert.pl: Basename $0.
	(showversion): Rename to ...
	(version): ... this. Print to stdout. Standarize output format.
	* scripts/update-alternatives.pl: Basename $0.
	(usageversion): Split into usage and version functions. Print to
	stdout. Standarize output format.
	* scripts/cleanup-info.pl: Basename $0.
	(version): Print to stdout. Standarize output format.
	(usage): Likewise. Print option descriptions.
	* scripts/install-info.pl: Basename $0. Add '--version'. On
	argument error print only usage.
	(version): Print to stdout. Standarize output format.
	(usage): Likewise. Print option descriptions.
	* man/C/dpkg-source.1: Add '--help' and '--version' options.
	* man/C/dpkg-architecture.1: Likewise.
	* man/C/dpkg-checkbuilddeps.1: Add '-h' option.
	* man/C/dpkg-divert.8: Option '--help' does not print the version
	anymore.
	* man/C/update-alternatives.8: Likewise.
	* man/C/dpkg-statoverride.8: Likewise. Add '--version' option.

2006-05-19  David Lopez Moreno  <david.lopez.moreno@hispalinux.es>

	* dpkg-deb/build.c (do_build): If failing to stat a
	conffile check for trailing whitespace in the conffiles
	file to give a more useful error message.

2006-05-19  Piotr Engelking  <inkerman42@gmail.com>

	* lib/database.c (informative): Don't regard
	architecture information alone as informative.
	* src/processarc.c (process_archive): Also
	delete origin, bugs and architecture information
	for disappearing packages.
	* src/remove.c (removal_bulk): Likewise for
	removed packages.

2006-05-19  Frank Lichtenheld  <djpig@debian.org>

	* src/help.c (hasdirectoryconffiles): New function
	to test wether a directory contains conffiles of
	a given package.
	* src/main.h: Add declaration of hasdirectoryconffiles.
	* src/remove.c (removal_bulk_remove_files): Don't
	drop directories from our file list that hold
	our conffiles.
	(removal_bulk_remove_leftover_dirs) Likewise.

	* utils/enoent.c: Add a comment at the top of the
	file explaining why we use this odd program at all.

2006-05-18  Frank Lichtenheld  <djpig@debian.org>

	* lib/showpkg.c (show1package): Test the correct
	pointer against NULL so that arbitrary fields get
	be printed.

2006-05-18  Frank Lichtenheld  <djpig@debian.org>

	* man/C/dpkg-query.1: Document that user defined
	fields can also be printed with --showformat.

2006-05-17  Frank Lichtenheld  <djpig@debian.org>

	* man/C/dpkg.1: We don't actually set DPKG_OLD_CONFFILE and
	DPKG_NEW_CONFFILE on subshells, so we shouldn't claim to do so.

2006-05-15  Nicolas François  <nicolas.francois@centraliens.net>

	* src/packages.c: Use fc_dependsversion (set by
	--force-depends-version) when only the version of a
	dependency is not satisfied. fc_dependsversion is never
	used otherwise.

2006-05-15  Nicolas François  <nicolas.francois@centraliens.net>

	* src/configure.c: Flush the terminal's input before
	prompting the user.

2006-05-15  Frank Lichtenheld  <djpig@debian.org>

	* debian/archtable: Update to reflect current
	archive: Add amd64 and remove sh.

	* src/depcon.c (findbreakcyclerecursive): Try
	to find cycles also by moving up Provides links.

2006-05-15  Ian Jackson  <iwj@ubuntu.com>

	* debian/control (dpkg[Depends]): Move
	coreutils dependency to Pre-Depends and
	depend on >= 5.93-1 to ensure that md5sum
	is present.
	* debian/dpkg.postinst: Don't create a
	diversion from coreutil's md5sum.
	* debian/dpkg.prerm: Delete the code
	that removed the diversion generated
	in the postinst. We rely on coreutils
	to clean up the mess we created.

2006-05-12  Frank Lichtenheld  <djpig@debian.org>

	* src/main.c (ignoredepends): Fix parsing of the
	--ignore-depends argument value.

	* dpkg-deb/info.c (info_spew): Prepend the name of the
	directory we're in to the control component name. This
	way we don't spew out garbage if we get an absolute
	path as component name.

	* scripts/dpkg-scanpackages.pl: Print usage
	information on stderr instead of stdout in
	case of error. Only print it on stdout if
	requested via -h.

	* scripts/dpkg-architecture.pl: Convert encoding
	of the file from iso-8859-1 to utf-8.

2006-05-12  Nicolas François  <nicolas.francois@centraliens.net>,
	    Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-gettext.pl: New module. Acts like a
	wrapper around Locale::gettext so that the scripts
	are usable without it, too.
	* debian/dpkg.install: Install dpkg-gettext.pl.
	* scripts/Makefile.am (dist_pkglib_SCRIPTS): Add dpkg-gettext.pl.

	* po/POTFILES.in: Add scripts installed with dpkg
	to the list.
	* po/Makevars (XGETTEXT_OPTIONS): Add _g to list of keywords.
	* debian/dpkg-dev.install: Install .mo files.
	* debian/control (dpkg-dev[Depends]): Bump dependency on dpkg
	to 1.13.20 since it needs dpkg-gettext.pl.
	* scripts/cleanup-info.pl: Add gettext support.
	* scripts/controllib.pl: Likewise.
	* scripts/dpkg-architecture.pl: Likewise.
	* scripts/dpkg-checkbuilddeps.pl: Likewise.
	* scripts/dpkg-distaddfile.pl: Likewise.
	* scripts/dpkg-divert.pl: Likewise.
	* scripts/dpkg-genchanges.pl: Likewise.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-parsechangelog.pl: Likewise.
	* scripts/debian/changelog.pl: Likewise.
	* scripts/dpkg-scanpackages.pl: Likewise.
	* scripts/dpkg-scansources.pl: Likewise.
	* scripts/dpkg-shlibdeps.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise.
	* scripts/dpkg-statoverride.pl: Likewise.
	* scripts/install-info.pl: Likewise.
	* scripts/update-alternatives.pl: Likewise.

2006-05-10  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-buildpackage.sh: Pass all
	remotely sensible -sX option through to
	dpkg-source (-s[nsAkurKUR]).

	* scripts/changelog/debian.pl: Use same regex for
	distribution names as for packages. Since the policy
	doesn't define these names very strict, we should give
	the user more freedom here though all official names
	are matched by a way stricter regex. (Characters now
	allowed are '+' and '.').

2006-05-10  Robert Millan  <rmh@aybabtu.com>,
	    Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-source.pl: When checking the
	signature of a .dsc file, use the Debian
	keyring if available.

2006-05-10  Frank Lichtenheld  <djpig@debian.org>

	* man/C/dpkg-deb.1: Mention the --show-format option also
	seperatly, not just in the description of --show.
	Point the reader to the explanation of --show-format
	in dpkg-query.1 to avoid having to duplicate it.

2006-05-10  Frank Lichtenheld  <djpig@debian.org>

	* man/C/dpkg-deb.1: Mention the --show-format option also
	seperatly, not just in the description of --show.
	Point the reader to the explanation of --show-format
	in dpkg-query.1 to avoid having to duplicate it.

	* man/C/dpkg-scanpackages.1: Add remark that apt ignores
	uncompressed Packages files on non-local access.
	* man/C/dpkg-scansources.1: Likewise (with Sources instead of
	Packages files of course).

2006-05-10  Nicolas François  <nicolas.francois@centraliens.net>

	* lib/showpkg.c (show1package): Honour the requested tabbing
	of fields even if they are empty.

2006-05-04  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.13.20~.

2006-05-04  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.13.19.

2006-05-04  Guillem Jover  <guillem@debian.org>

	* man/C/dpkg-divert.8: Escape hyphens used in command line.
	* man/C/dpkg-architecture.1: Likewise.
	* man/C/dpkg-statoverride.8: Likewise.

2006-05-04  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl: Do not use $version to refer to the
	source package version, as it denotes the dpkg version.

2006-05-04  Nicolas François  <nicolas.francois@centraliens.net>,
	    Guillem Jover  <guillem@debian.org>

	* scripts/install-info.pl: Use the numerical value of $! instead of
	the string when checking if the locking error was due to an already
	existing file, which is locale dependent, and die accordingly.

2006-05-04  Nicolas François  <nicolas.francois@centraliens.net>

	* scripts/install-info.pl: Add a new line after adding the last
	entry at the end of the dir file, which makes the info readers
	able to see those last entries.

2006-05-04  Wayne Davison  <wayned@users.sourceforge.net>,
	   Guillem Jover  <guillem@debian.org>

	* scripts/install-info.pl: Make '--dir-file' option compatible
	with GNU install-info by renaming the infodir variable to dirfile
	and not appending the '/dir' string except when initializing from
	'--info-dir' or '--infodir'.

2006-05-04  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-gencontrol.pl: Use the source:Version substvar when
	setting the Source field version, in case the binary package
	has a different one from the source package.

2006-05-02  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (do_help): Standarize output format.

2006-05-02  Guillem Jover  <guillem@debian.org>

	* dselect/main.cc (usage): Split string and align so duped strings get
	merged.
	* dpkg-deb/main.c (usage): Likewise.
	* dpkg-split/main.c (usage): Likewise.
	* src/query.c (usage): Likewise.
	* src/main.c (usage): Likewise.

2006-05-02  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-genchanges.pl: Rename dpkg:UpstreamVersion to
	dpkg:Upstream-Version. Make dpkg:Version and dpkg:Upstream-Version
	get the current dpkg versions instead of the package being built.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* man/C/dpkg-source.1: Rename dpkg:UpstreamVersion to
	dpkg:Upstream-Version.

2006-05-02  Ken Bloom  <kbloom@gmail.com>,
	    Jeroen van Wolffelaar  <jeroen@wolffelaar.nl>,
	    Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl (parsechangelog): Add new source:Version,
	source:Upstream-Version and binary:Version substvars.
	* man/C/dpkg-source.1: Document new source:Version,
	source:Upstream-Version and binary:Version substvars.

2006-04-29  Justin Pryzby  <justinpryzby@users.sourceforge.net>

	* src/filesdb.c: Fix a typo (unexecpted -> unexpected).

2006-04-21  Guillem Jover  <guillem@debian.org>

	* src/query.c (enqperpackage): Change dynamically constructed
	grammar to proper sentences.
	* src/packages.c (deppossi_ok_found): Likewise.
	* src/main.c (commandfd): Do not use digits, use textual numbers.
	* lib/dbmodify.c (createimptmp): Use proper verb forms.
	* lib/showcright.c (showcopyright): Remove trailing space from string.
	* lib/parsehelp.c (illegal_packagename): Clarify what is the last '%s'.
	* dpkg-deb/extract.c (movecontrolfiles): Likewise.
	(extracthalf): Do not use abbreviations in the strings.

2006-04-21  Guillem Jover  <guillem@debian.org>

	* src/main.c (printforhelp, setdebug, setforce): Quote each string
	line instead of escaping its new line at the end.

2006-04-19  Nicolas Francois  <nicolas.francois@centraliens.net>

	* man/C/install-info.8: Add a missing quote around the date.
	* man/C/dpkg-source.1: Add a reference to the Debian Policy Manual
	for a detailed description of the shlibs format.
	Thanks to Russ Allbery.

2006-04-16  Nicolas Francois  <nicolas.francois@centraliens.net>

	* man/C/dpkg-source.1: Document the shlibs.local format.

2006-04-11  Frank Lichtenheld  <djpig@debian.org>

	* src/archives.c (quote_filename): Fix typo in
	variable name. If hit, this could lead to a
	infinite loop and OOM in varbufvprintf. (A
	good way to hit it is installing files with
	long non-ASCII filenames in UTF-8 locales).
	Fixed also some typos in the comment for this
	function.

	* scripts/dpkg-scanpackages.pl: Add -follow
	to @find_args. This was lost in a previous patch
	apparently.

2006-04-10  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.13.19~.

2006-04-10  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.13.18.

2006-04-10  Guillem Jover  <guillem@debian.org>

	* man/C/dpkg.1: Document the new way to replicate the package status
	to another installation by using '--clear-selections'.

2006-04-10  Andrew Suffield  <asuffield@debian.org>

	* src/main.h (clearselections): New prototype.
	* src/main.c (usage): Print '--clear-selections' option description.
	(cmdinfos): Add clear-selectons action.
	* src/select.c (clearselections): New function.
	* man/C/dpkg.1: Document the new '--clear-selections' option.

2006-04-10  Guillem Jover  <guillem@debian.org>

	* src/main.h (fc_autoselect): Remove.
	* src/main.c (fc_autoselect): Likewise.
	(forceinfos): Mark 'auto-select' as obsolete.
	(setforce): Remove mention of 'auto-select' from the help text.
	Handle obsolete options, and display a warning.
	* man/C/dpkg.1: Remove mention of obsolete force/refuse 'auto-select'
	option.

2006-04-09  Guillem Jover  <guillem@debian.org>

	* man/C/dpkg.1: Document that '--get-selections' without a pattern
	will not list packages in state purge.
	* man/C/dpkg-query.1: Document that '-l' without a pattern will not
	list packages in state purge.

2006-04-09  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-shlibdeps.pl: Support system library directories
	symlinked from '/lib/ldconfig/'.

2006-04-09  Branden Robinson  <branden@debian.org>,
            Guillem Jover  <guillem@debian.org>

	* src/main.c (execbackend): Pass '--admindir' over to dpkg-query
	when passing '--admindir' or '--root' to dpkg.

2006-04-04  Andrew Suffield  <asuffield@debian.org>

	* dpkg-buildpackage.sh: Use mustsetvar to set sversion variable.

2006-04-04  Jared Spiegel  <jrrs@frontiernet.net>

	* utils/start-stop-daemon.c (do_help): Add '-r' option to the help
	output.

2006-04-04  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (main): Prefix the chroot path, if any,
	when stating the exec file.

2006-03-30  Guillem Jover  <guillem@debian.org>

	* src/main.c (setforce): Add a '[!]' next to 'all' to denote that
	'--force-all' is dangerous.

2006-03-20  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.13.18~.

2006-03-20  Guillem Jover  <guillem@debian.org>

	* configure.ac: Release 1.13.17.

2006-03-20  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c [OSLinux] (pid_is_exec): Revert back to
	take a struct stat instead of an execname. Get the filename pointed
	by the '/proc/<pid>/exe' symlink, strip any ' (deleted)' string, and
	stat that filename comparing the result with the new argument.

2006-03-15  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl.in: Rename to ...
	* scripts/controllib.pl: ... this.
	(debian_arch_expand): Remove function. Fix all callers.
	(pkgdatadir, read_cputable, read_ostable): Move to ...
	* scripts/dpkg-architecture.pl: ... here.
	* scripts/Makefile.am (%.pl): Remove rule.

2006-03-05  Guillem Jover  <guillem@debian.org>

	* scripts/controllib.pl.in (quiet_warnings): New variable.
	(warn): Do not print if quiet_warnings.
	* dpkg-source.pl (usageversion): Document new option `-q'.

2006-03-05  Guillem Jover  <guillem@debian.org>

	* debian/control (Build-Depends): Do not depend on libselinux1-dev
	in GNU/kFreeBSD amd64.

2006-03-04  Christian Perrier  <bubulle@debian.org>

	* man/C/dpkg-architecture.1: Typo corrections.
	* man/C/dpkg-checkbuilddeps.1: Likewise.
	* man/C/dpkg-name.1: Likewise.
	* man/C/dpkg-source.1: Likewise.
	* man/C/deb-control.5: Likewise.

2006-02-28  Guillem Jover  <guillem@debian.org>

	* man/C/dpkg.1 (SEE ALSO): Add dpkg-query(1).

2006-02-28  Guillem Jover  <guillem@debian.org>

	* man/C/822-date.1: Lower case title header. Put options in bold,
	files and arguments to options in italic. Escape hyphens used in
	command line. Unescape dashes. Remove spaces after full stops and
	after end of line. Separete sections with a dot. Do not put the
	manpage section number in bold.
	* man/C/cleanup-info.8: Likewise.
	* man/C/deb.5: Likewise.
	* man/C/deb-control.5: Likewise.
	* man/C/deb-old.5: Likewise.
	* man/C/dpkg.1: Likewise.
	* man/C/dpkg.cfg.5: Likewise.
	* man/C/dpkg-checkbuilddeps.1: Likewise.
	* man/C/dpkg-deb.1: Likewise.
	* man/C/dpkg-divert.8: Likewise.
	* man/C/dpkg-name.1: Likewise.
	* man/C/dpkg-query.1: Likewise.
	* man/C/dpkg-scanpackages.1: Likewise.
	* man/C/dpkg-source.1: Likewise.
	* man/C/dpkg-split.1: Likewise.
	* man/C/dpkg-statoverride.8: Likewise.
	* man/C/dselect.1: Likewise.
	* man/C/dselect.cfg.5: Likewise.
	* man/C/install-info.8: Likewise.
	* man/C/start-stop-daemon.8: Likewise.
	* man/C/update-alternatives.8: Likewise.
	* man/C/dpkg-scansources.1: Likewise. Remove '.IX' entries.
	* man/C/dpkg-architecture.1: Likewise. Split most of the body of the
	section DESCRIPTION into OPTIONS and ACTIONS.

2006-02-28  Matt Kraai  <kraai@ftbfs.org>

	* scripts/dpkg-gencontrol.pl: Fix typo (occoured -> occurred).
	* scripts/dpkg-source.pl: Likewise.

2006-02-20  Matt Kraai  <kraai@ftbfs.org>

	* man/C/dpkg-source.1: Add missing parentheses around manpage
	section number.

2006-02-19  Guillem Jover  <guillem@debian.org>

	* po/README.translators: Move to ...
	* README.translators: ... here. Formatting fixes. Update to refer
	to latest new ChangeLog files, and rules.

2006-02-19  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-scanpackages.pl: Fix option
	parsing of arch option. Also fix a mistake
	in constructing @find_args.

2006-02-18  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-gencontrol.pl: Call parsedep
	with use_arch and reduce_arch parameters to
	allow using architectures in dependency
	fields of binary packages in debian/control.

	* scripts/dpkg-gencontrol.pl: Fix handling of
	debian/files when architecture is set via -D
	command line option. The value override was
	applied too late.

	* configure.ac: Bump version to 1.13.17~.

	* configure.ac: Release 1.13.16.

2006-02-18  A. Costa  <agcosta@gis.net>

	* man/C/dpkg-deb.1: Typo fix.
	* man/C/dpkg-statoverride.8: Likewise.
	* man/C/install-info.8: Likewise.
	* man/C/start-stop-daemon.8: Likewise.
	* man/C/update-alternatives.8: Likewise.
	* man/C/dpkg.1: Likewise.
	* man/C/dpkg.cfg.5: Likewise.

2006-02-17  Frank Lichtenheld  <djpig@debian.org>

	* man/ChangeLog: Start an own changelog for the
	manpages.

	* scripts/dpkg-scanpackages.pl: Fix override handling
	which was broken by the latest changes.

	* scripts/dpkg-gencontrol.pl: Make -isp the default
	behaviour.
	* man/C/dpkg-source.1: Document the behaviour
	change in dpkg-gencontrol.

	* man/Makefile.am (updatepo): New target that calls
	'make updatepo' in all subdirectories.

2006-02-17  Guillem Jover  <guillem@debian.org>

	* debian/dselect.install: Install only dselect domain.
	* debian/dpkg.install: Install only dpkg domain.
	* dselect/po: New directory.
	* dselect/main.cc (main): Use DSELECT domain.
	* dselect/Makefile.am (SUBDIRS): Add po.
	* configure.ac (AC_CONFIG_FILES): Add dselect/po/Makefile.in.

2006-02-17  Guillem Jover  <guillem@debian.org>

	* methods/: Move directory to dselect/methods/.
	* Makefile.am (SUBDIRS): Move methods to ...
	* dselect/Makefile.am (SUBDIRS): ... here. New variable.
	* configure.ac (AC_CONFIG_FILES): Rename methods/Makefile to
	dselect/methods/Makefile.

2006-02-17  Guillem Jover  <guillem@debian.org>

	* configure.ac: Require gettext 0.14.5.

2006-02-17  Guillem Jover  <guillem@debian.org>

	* configure.ac: Use AC_CONFIG_AUX_DIR to move auxiliary scripts to
	config/.

2006-02-16  Frank Lichtenheld  <djpig@debian.org>

	* configure.ac: Bump version to 1.13.16~.

2006-02-15  Frank Lichtenheld  <djpig@debian.org>

	* configure.ac: Release 1.13.15.

2006-02-13  Jordi Mallach  <jordi@debian.org>

	* src/processarc.c (process_archive): Add missing closing parenthesis
	in a string.

2006-02-12  Frank Lichtenheld  <djpig@debian.org>

	* configure.ac: Bump version to 1.13.15~.

	* configure.ac: Release 1.13.14.

2006-02-11  Denis Barbier  <barbier@debian.org>

	* man/C/dpkg.1: Escape ` and ', otherwise they are converted to
	quotation marks, which makes cut and paste useless.
	* man/C/dpkg-query.1: Likewise.
	* man/C/dpkg-name.1: Likewise.
	* man/C/dpkg-architecture.1: Likewise.

2006-02-11  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-source.pl: Add .git to
	$diff_ignore_default_regexp.

	* scripts/dpkg-source.pl: Remove any
	newlines from Uploaders field to allow
	people to make it multi-line in the
	source package.

2006-02-10  Denis Barbier  <barbier@linuxfr.org>

	* scripts/dpkg-source.pl: Touch all patched files
	to have the same timestamp. This should mitigate
	time-skew problems until we can finally add proper
	timestamps to the diffs.

2006-02-10  Ian Jackson  <iwj@ubuntu.com>

	* src/configure.c: Differentiate between modified
	and deleted configuration files. Gives and more
	accurate description to the user and eliminates
	a warning that was produced when trying to
	backup a non-existent file.

	* lib/dpkg-db.h (conffile): Add `obsolete' field.
	* lib/dump.c (w_conffiles): Write "obsolete" at the
	end of conffile entry if obsolete is set.
	* lib/fields.c (f_conffiles): Parse entries for
	obsolete conffiles correctly.
	* src/filesdb.h (filenamenode.flags): Add new
	flag for obsolete conffiles.
	* src/remove.c (removal_bulk_remove_configfiles):
	Handle obsolete conffiles.
	* src/archives.c (newconff_append): New function
	to append a filenamenode to a fileinlist.
	(addfiletolist): New function to add a filenamenode
	to a tarcontext.
	(tarobject): Use new addfiletolist function.
	Handle case where a new package takes over
	an obsolete conffile from another package.
	* src/archives.h: Add declaration of the
	addfiletolist function.
	* src/processarc.c (process_archive): Use new
	newconff_append function from archives.c.
	Detect obsoleted conffiles and mark them as such.
	* src/help.c (chmodsafe_unlink): Make it possible
	to differentiate between failed chmod and failed
	unlink by adding a new `failed' argument which
	will be set to the name of the failed command.
	(chmodsafe_unlink_statted): New function that
	can be called if we already have a stat result for
	the file/directory to be removed.
	(ensure_pathname_nonexisting): Give better error
	messages by utilizing the changes to
	chmodsafe_unlink.
	* src/main.h: Reflect changes in archives.c
	and help.c (add declarations for newconff_append
	and chmodsafe_unlink_statted and change the
	one of chmodsafe_unlink).
	(conffopt): Add new isold flag.

2006-02-10  James R. Van Zandt  <jrvz@comcast.net>

	* man/C/dpkg.1: Document the default log file. The behaviour in case
	of multiple --log options. And add a reference to dpkg.cfg manpage.

2006-02-10  Philippe Batailler  <philippe.batailler@free.fr>,
	    Guillem Jover  <guillem@debian.org>

	* man/C/dpkg-query.1: Use dots instead of blank lines to logically
	separate sections.
	(SYNOPSIS): Add command descriptions.
	(COMMANDS): Use package-name instead of package.
	(OPTIONS): Give an example for --showformat.
	(SEE ALSO): Add a final dot to reference.

2006-02-08  Guillem Jover  <guillem@debian.org>

	* man/po4a.mk (%): Replace % with $@ as the former is not substituted
	in the rule's command.

2006-02-08  Guillem Jover  <guillem@debian.org>

	* debian/contrl (Build-Depends): Depend on version >= 1.28-4 of
	libselinux1-dev as it has pkg-config support. Remove libsepol1-dev,
	now dragged by libselinux1-dev. Add pkg-config.
	* m4/libs.m4 (DPKG_LIB_SELINUX): Use pkg-config to get the static
	and dynamic linker flags, thus no more hardcoding the transitional
	libraries.

2006-02-07  Nicolas François  <nicolas.francois@centraliens.net>

	* man/C/dselect.1: Fix a typo: replace '.sh' by '.sp'.
	* man/C/dpkg-scansources.1: Fix a typo: replace '.Sp' by '.sp'.

2006-02-07  Guillem Jover  <guillem@debian.org>

	* man/C/update-alternatives.8: Remove trailing 'C'.

2006-02-06  Changwoo Ryu  <cwryu@debian.org>,
	    Guillem Jover  <guillem@debian.org>

	* lib/dump.c (writerecord): Mark strings as translatable.
	* lib/fields.c (f_priority): Likewise.
	* lib/mlib.c (checksubprocerr): Likewise.

2006-02-06  Guillem Jover  <guillem@debian.org>

	* src/main.c (printversion): Do not split strings with a macro in
	the middle, use C format arguments. Use printf instead of fputs.
	* src/query.c (printversion): Likewise.
	* dpkg-deb/main.c (printversion): Likewise.
	* dpkg-split/main.c (printversion): Likewise.

	* src/main.c (usage): Use printf instead of fprintf. Uppercase initial
	letter for commands descriptions. Quote strings per line. Standarize
	indentation. Split globally common strings. Remove program name prefix
	from command descriptions. Standarize 'Usage:' and 'Commands:'
	headings. Split independent commands into different lines.
	* src/query.c (usage): Likewise.
	* dpkg-deb/main.c (usage): Likewise.
	* dpkg-split/main.c (usage): Likewise.

	* src/main.c (printforhelp): Use 'license' instead of 'licence'.
	* src/query.c (printforhelp): Likewise.

	* dselect/main.cc (programdesc): Add version string from ...
	(copyrightstring): ... here. Move GPL license notice to ...
	(licensestring): ... here. New variable.
	(printversion): Use printf instead of fprintf. Give proper arguments
	to the new formated strings. Print 'licensestring'.
	(usage): Use printf instead of fprintf. Standarize indentation. Add
	options descriptions. Add a new line after each section.
	(curseson): Do not split strings with a macro in the middle, use
	C format arguments.
	(refreshmenu): Fix arguments given to 'programdesc' and
	'copyrightstring' variables. Print 'licensestring' variable.

2006-02-06  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (main): When using --chuid set the HOME
	environment variable.

2006-02-05  Christian Perrier  <bubulle@debian.org>

	* man/*: Switch all translations to po4a. Work contributed
	by Nicolas François.

2006-01-30  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-shlibdeps.pl: Fix some variable name
	typos that lead to semantic errors. Also change
	the names of the variables to prevent such errors
	in the future.

2006-01-29  Frank Lichtenheld  <djpig@debian.org>

	* man/C/dpkg-scanpackages.1: Document new dpkg-scanpackages
	-m option added by Don Armstrong.
	* scripts/dpkg-scanpackages.pl: Fix some bugs introduced by
	the rewrite.

	* man/C/dpkg-source.1: Document that the -sX switches for
	dpkg-source are mutually exclusive and only one can be in
	effect.
	* scripts/dpkg-source.pl: Warn if more than one -sX switch
	is specified on the command line.

	* scripts/dpkg-source.pl: Make dpkg-source -b more robust
	regarding to existing symlinks by creating all files
	in secure temporary files and renaming them afterwards.
	This fixes problems with packages retrieved with
	apt-get source from local repositories.

2006-01-29  Don Armstrong  <don@debian.org>

	* scripts/dpkg-scanpackages.pl: Rewrite the script to support
	multiple versions of packages in a single Packages file;
	use Getopt::Long instead of attempting to parse the command line
	ourselves and doing it badly;
	get rid of unnecessary hashes and arrays that aren't used at all;
	output help when given the --help/-h/-? options

2006-01-29  maximilian attems  <debian@sternwelten.at>

	* scripts/dpkg-source.pl: Add files and
	dirs used by bzr to $diff_ignore_default_regexp.

2006-01-29  Julian Gilbey  <jdg@debian.org>

	* scripts/dpkg-buildpackage.sh: Create .changes
	file even if signing .dsc file fails to make it
	easier to just sign the package later.

	* scripts/dpkg-buildpackage.sh: Change heuristics
	of gpg check so that it allows for more complex
	setups.

2006-01-29  Anand Kumria  <wildfire@progsoc.org>

	* scripts/dpkg-source.pl (checkdiff): Ignore comments
	hunk header line as used by diff -p.

2006-01-29  Guillem Jover  <guillem@debian.org>

	* utils/start-stop-daemon.c (do_help): Print the proper version
	giving it as an argument to printf, instead of printing 'VERSION'.

2006-01-29  Guillem Jover  <guillem@debian.org>

	* configure.ac: Bump version to 1.13.14~.

2006-01-28  Frank Lichtenheld  <djpig@debian.org>

	* configure.ac: Release 1.13.13.

2006-01-28  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-architecture.pl: Do not print the warning about a
	missmatch between gcc target machine type and GNU target system
	type if the actions are '-e' or '-i'.

2006-01-27  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-shlibdeps.pl: Honor LD_LIBRARY_PATH when
	searching for shared libraries.
	* scripts/dpkg-shlibdeps.pl: Don't recurse into package
	directories when searching for local shlibs files.

2006-01-26  Zefram  <zefram@fysh.org>,
	    Guillem Jover  <guillem@debian.org>

	* man/C/dpkg-query.1: Document the correct format string for
	the '--showformat' option. Update '-l' example. Lower case program
	name in title header.

2006-01-26  Christoph Maser  <cm@financial.com>

	* utils/start-stop-daemon.c (do_help): Fix typo ('-C' -> '-d').

2006-01-26  A Costa  <agcosta@gis.net>

	* man/C/dselect.1: Fix typos.

2006-01-26  Bastian Kleineidam  <calvin@debian.org>

	* man/C/dpkg.1: Document the --no-debsig option.

2006-01-26  Marc Haber  <mh+debian-packages@zugschlus.de>

	* man/C/dpkg-statoverride.8: Fix typo.

2006-01-24  Frank Lichtenheld  <djpig@debian.org>

	* debian/control (Section): dpkg and dselect are now in section
	admin, not section base. Correct info in the control file.
	(Standards-Version): Bump Standards-Version to 3.6.2 (no changes).

	* man/C/dpkg-architecture.1: Fix typo.

2006-01-23  Vasilis Vasaitis  <v.vasaitis@sms.ed.ac.uk>

	* utils/start-stop-daemon.c (pid_is_exec) [OSLinux]: Change function
	prototype to take a constant string instead of a struct stat. Compare
	the filename pointed by the '/proc/<pid>/exe' symlink, instead of the
	stat device and inode numbers. Fix all callers.

2006-01-23  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-shlibdeps.pl: Rewrite of the script
	to not use the path information from ldd anymore (which
	is unreliable in the case of symlinked directories and
	not necessarily available for biarch builds). Instead
	build an own representation of the search patch.

	* scripts/dpkg-source.pl: Don't use \b to match the end
	of the version in filenames, use (?=[.-]) and (?=\.) instead.
	\b doesn't work in case the version ends with ~.

	* AUTHORS: Updated for new maintenance team
	* debian/copyright: Add myself as copyright holder since
	I also added a note to that effect with my dpkg-shlibdeps
	patch.

2006-01-23  Guillem Jover  <guillem@debian.org>

	Support for architecture wildcards.

	* scripts/controllib.pl: Rename to ...
	* scripts/controllib.pl.in: ... this.
	* scripts/dpkg-architecture.pl: Add new actions '-e'  and '-i' that
	call debian_arch_eq and debian_arch_is, to check for architecture
	equality and identity respectively. Use debian_arch_fix instead of
	the duplicated code.
	(pkgdatadir, read_cputable, read_ostable): Move to ...
	* scripts/controllib.pl.in: ... here.
	(debian_arch_fix): New function. Fix normalized kernel-cpu input to
	legacy Debian architecture output.
	(debian_arch_split): New function. Normalize and split input into
	kernel and cpu components.
	(debian_arch_eq): New function. Compare two tuples for equality after
	having normalized them with debian_arch_split.
	(debian_arch_is): New function. Check two tuples for identity after
	having normalized them with debian_arch_split.
	(debian_arch_expand): New function. Expand the normalized input
	into all possible legacy Debian architectures matching the wildcard.
	(parsedep): Use debian_arch_is to check if the host architecture is
	part of the architecture listed in the dependency relationship.
	(showdep): Use debian_arch_expand to normalize the architectures for
	binary and source packages, so generated packages will be backward
	compatible in regard to architecture format.
	* scripts/dpkg-genchanges.pl: Use new dpkg_arch_is and dpkg_arch_eq
	instead of the hardcoded checks.
	* scripts/dpkg-gencontrol.pl: Likewise.
	* scripts/dpkg-source.pl: Likewise. Use dpkg_arch_expand to fill
	the Architecture field with the legacy Debian architecures.
	* scripts/Makefile.am: New rule to generate .pl from .pl.in files.
	* man/C/dpkg-architecture.1: Update. Add new options, and few words
	about the format of the wildcards.

2006-01-23  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-source.pl: Add a missing '+' in the architecture
	validator regex.

2006-01-23  Bart Martens  <bart.martens@advalvas.be>,
	    Guillem Jover  <guillem@debian.org>

	* debian/contrl (Build-Depends): Add libsepol1-dev as a temporary
	workaround until libselinux1-dev has pkg-config support.
	* m4/libs.m4 (DPKG_LIB_SELINUX): Explicitly statically link against
	libsepol.

2006-01-20  Aurelien Jarno  <aurel32@debian.org>

	* debian/control (Build-Depends): Do not depend on libselinux1-dev
	in GNU/kFreeBSD.

2006-01-20  Lennert Buytenhek  <buytenh+debian@wantstofly.org>

	* cputable: Add armeb.

2006-01-18  Joey Hess  <joeyh@debian.org>

	* scripts/dpkg-shlibdeps.pl: Add possibility to specify a package
	type in the shlibs file and add a -t switch to dpkg-shlibdeps to
	specify the wanted type. Entries without package type will have
	type 'deb' and will serve as fallback if no entry with the correct
	type is found.
	* man/C/dpkg-source.1: Document new -t switch for dpkg-shlibdeps.

2005-10-11  Frank Lichtenheld  <djpig@debian.org>

	* man/C/*.[158]: Update references to dpkg and dselect
	man pages with correct section (8->1).
	* man/C/dselect.1: Update reference to debconf
	man page with correct section (8->1).

	* scripts/dpkg-source.pl: Warn on -b if we add a file with
	special (i.e. exectuable or set{u,g}id) permission in the
	diff since this mode will get lost.

2005-10-07  Frank Lichtenheld  <djpig@debian.org>

	* scripts/controllib.pl (checkversion): Add generic check for valid
	version numbers.
	(checkpackagename): Add generic check for valid package names.
	(readmd5sum): Add generic function to extract md5sum from md5sum
	program output. This also fixes the handling of md5sum -b output in
	dpkg-source.
	(setsourcepackage): Call checkpackagename on new value.
	* scripts/dpkg-source.pl: Use the new checks added to
	controllib to ensure validity of version and packagename
	on build, too. Previously this was only done on
	unpack.

	* scripts/dpkg-source.pl: Test on build if directories
	added by diff already exist with other type in the original
	source since we already tested that on unpack.

	* scripts/dpkg-source.pl (addfile): Test if files are added
	twice. Should not happen but as we error out on unpack
	better make sure it doesn't.

2005-10-04  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-source.pl: Check build relation
	fields for correctness before putting them into
	the .dsc when building. This also normalizes the
	fields.

2005-10-03  Matt Zimmerman  <mdz@debian.org>,
	    Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-source.pl: If gpg is installed, check
	the signature of the .dsc file before unpacking.
	Allow the unpacking to succeed if the .dsc is unsigned
	but error out if the signature is bad. If gpg exits
	with a code >2 (e.g. missing key), show the user the gpg
	output but continue.

2005-10-03  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-source.pl: Try to chown files extracted from
	a tar file to the uid and gid of the user. This should make
	dpkg-source -x safer to use as root. Also create the temporary
	directory mode 0700 to not allow anyone exploiting races
	between the extraction and the chown.

	* scripts/dpkg-gencontrol.pl: Warn about illegal architecture
	strings. This will warn e.g. about comma-separated architecture
	lists.
	* scripts/dpkg-source.pl: Also check architecture strings and
	error out if we find illegal ones.

2005-08-27  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-gencontrol.pl: Bail out with an error if parsedep
	found an error while parsing a dependency field.

2005-08-17  Scott James Remnant  <scott@netsplit.com>

	* configure.ac: Bump version to 1.13.12~.

	* configure.ac: Release 1.13.11.

	* scripts/dpkg-source.pl: Re-work the logic that handles the Files
	field when unpacking source packages; always remove the revision
	component and thereby allow -$rev.orig.tar.gz as well as native
	diff.gz or debian.tar.gz; improve the "unrecognised file" error to
	give the full filename, not the mangled suffix; check whether the
	revision has length, rather than is non-zero ("0" is false in Perl).

2005-08-17  Frank Lichtenheld  <djpig@debian.org>

	* scripts/controllib.pl (parsedep): Correct a bug that caused wrong
	architecture requirements in some cases, due to only "my"ing the
	@arches list in some circumstances.

2005-08-17  Colin Watson  <cjwatson@ubuntu.com>

	* src/processarc.c (process_archive): When copying the forward
	dependency tree, blank the version field of unversioned dependencies
	rather than leaving them uninitialised.

2005-08-17  Scott James Remnant  <scott@netsplit.com>

	* scripts/dpkg-source.pl: Fix a few problems found with the
	$diff_ignore_default_regexp value; it'd match any path with
	DEADJOE in it somewhere (or .cvsignore, etc.), wouldn't match
	an initial CVS or {arch}, etc.
	Took the opportunity to reformat the string and add some comments,
	which get stripped out before it's used.
	Added tla/baz junk ",,.*" to the list of filters.

	* lib/dbmodify.c (log_message): Call setcloexec() on the log
	file descriptor, otherwise we leak it to our children.

2005-08-17  Ludovic Rousseau  <rousseau@debian.org>

	* src/filesdb.c: Replace all references to "statusoverride" file
	with "statoverride".

2005-08-17  Scott James Remnant  <scott@netsplit.com>

	* src/query.c (enqperpackage): Only output a newline between
	different packages and not after the last one.

	* man/C/dpkg-deb.1: Document -W/--show and --showformat.

2005-08-14  Bastian Kleineidam  <calvin@debian.org>

	* man/C/dpkg-architecture.1: Fix typo.

2005-08-14  Frank Lichtenheld  <djpig@debian.org>

	* scripts/dpkg-genchanges.pl: Give a warning when one tries
	to use -sd on a native Debian package.

	* scripts/dpkg-source.pl: Handle absolute paths in the argument
	given for -b.

	* scripts/dpkg-source.pl: Give more meaningful error message
	if first argument to dpkg-source -x is a directory

	* scripts/controllib.pl (parsecdata): Ignore trailing newlines
	in single paragraph control files.

	* scripts/controllib.pl (parsedep): Give a warning explaining
	the problem when failing to parse the dependency.
	* scripts/dpkg-checkbuilddeps.pl: Pass the dependency field name
	to all calls to &build_depends() and &build_conflicts(), which
	both call &check_line().
	(check_line): Take an argument specifying the field name, and
	use it to output an error if the dependency list is not
	defined (caused by a failure of &parsedep()).

	* scripts/controllib.pl: Remove the %capit map, it's no longer
	used and everything uses the &capit() function instead.
	(capit): Uppercase all letters that come after a minus ('-'),

2005-08-14  Moritz Muehlenhoff  <jmm@inutil.org>,
	    Frank Lichtenheld  <djpig@debian.org>

	* scripts/controllib.pl (parsedep): Allow whitespace before
	version operators in dependencies.

2005-08-14  Goswin Brederlow  <brederlo@informatik.uni-tuebingen.de>

	* scripts/dpkg-name.sh (stderr): Use shell redirect rather than
	/dev/stderr.

2005-08-14  Scott James Remnant  <scott@netsplit.com>

	* debian/control ([dselect]Description): Remove "a" from the start
	of the description synopsis line.
	([dpkg]Description): De-capitalise description synopsis line.
	([dpkg-dev]Description): Likewise.

2005-08-14  Guillem Jover  <guillem@debian.org>

	* scripts/dpkg-architecture.pl (usageversion): Correct punctuation
	in copyright message and escape the @ so Perl doesn't treat it as
	an array reference.  Same for initial comment.

2005-07-17  Scott James Remnant  <scott@netsplit.com>

	* src/remove.c (removal_bulk_remove_files): Call lstat() rather
	than stat() when removing a character, block or setuid file so
	we change the thing itself and not what the symlink points to.
	* src/processarc.c (process_archive): Likewise.

	* src/processarc.c (process_archive): Call ohshit() after finding
	out we don't have an errno, not ohshite().

	* src/cleanup.c (cu_preinstverynew): Blank the status information
	of a newly installed package that we aborted the install of,
	to avoid having packages in a not-installed state but with a version.

2005-07-16  Scott James Remnant  <scott@netsplit.com>

	* src/filesdb.h (filenamenode.flags): Add fnnf_placed_on_disk flag
	to indicate that the file is now on the disk, and thus needs to be
	removed in cleanup if that happens.
	* src/cleanup.c (cu_installnew): If <foo>.dpkg-tmp did not exist,
	and the fnnf_placed_on_disk flag is set, we now remove the newly
	created file.
	* src/archives.c (tarobject): Set the fnnf_placed_on_disk flag once
	the rename to the final destination succeeds.  Add additional
	comments to the source so we know what's on the disk at each point.
	Fix up the #ifdef syntax to not confuse emacs.

	* src/archives.c (filesavespackage): Check whether the file we're
	going to install is going to be diverted, before whether it's in the
	new archive.

	* src/processarc.c (process_archive): When removing files that
	were in the old version of the package only, don't just call
	isdirectoryinuse(), actually check whether it's a directory first;
	otherwise we won't remove diverted things.

2005-07-15  Scott James Remnant  <scott@netsplit.com>

	* lib/ehandle.c (run_cleanups): Modify the value of flagset
	according to the checkpoint mask and value after processing,
	otherwise we'll run handlers we didn't mean to.
	(pop_cleanup): Remove the flagset setting, we don't mix
	checkpoints and calls anywhere.

2005-06-28  Scott James Remnant  <scott@netsplit.com>

	* configure.ac: Bump version to 1.13.11~.

	* configure.ac: Release 1.13.10.

	* debian/dpkg.preinst (create_logfile): Remove from preinst.
	* debian/dpkg.postinst (create_logfile): To postinst; I can't think
	of any particular reason it needs to happen before configuration.
	In addition, use numeric ids for the chown call to avoid requirement
	that base-passwd be configured first.

2005-06-28  Manoj Srivastava  <srivasta@debian.org>

	* src/archives.c: Look at the security context of the final
	destination, not the temporary file.

2005-06-24  Scott James Remnant  <scott@netsplit.com>

	* po/POTFILES.in: Remove lib/star.c.

2005-06-24  Manoj Srivastava  <srivasta@debian.org>

	* src/archives.c: Restore selinux code incorrectly placed in
	lib/star.c, modified to fit in with tarobject.

2005-06-17  Scott James Remnant  <scott@netsplit.com>

	* debian/dpkg.preinst (confirm_dselect_split): When set -e,
	following a command with "|| return" doesn't eat the exit status.

	* lib/dbmodify.c (log_message): Set the log to be line-buffered.

2005-06-16  Scott James Remnant  <scott@netsplit.com>

	* lib/star.c: Remove, it's unused code and causes confusion.
	* lib/Makefile.am (libdpkg_a_SOURCES): Don't compile star.c.

2005-06-15  Bastian Kleineidam  <calvin@debian.org>

	* man/C/dpkg.cfg.5: Correct reference to dpkg(8) to dpkg(1).

2005-06-14  Scott James Remnant  <scott@netsplit.com>

	* man/C/dpkg-architecture.1: Add missing "recent" from paragraph
	on backward compatibility.

2005-06-13  Scott James Remnant  <scott@netsplit.com>

	* debian/rules: Check DEB_HOST_ARCH_OS and only add the option
	to enable SELinux if we're on Linux.
	* debian/control (Build-Depends): Don't build-depend on
	libselinux1-dev on hurd-i386.  The complete list is too long to
	maintain, so wait until we can put "[linux-any]" in here.

	* scripts/dpkg-source.pl: Handle native tarballs with a
	Debian revision.

	* lib/dbmodify.c (log_message): Use the local time, not UTC;
	this is more consistent with syslog.

2005-06-13  Johannes Veser  <veser@gmx.de>

	* debian/dpkg.prerm (undivert_md5sum): dpkg-divert takes the
	diverted filename, not the destination.

2005-06-13  Scott James Remnant  <scott@netsplit.com>

	* debian/dpkg.install: Remove start-stop-daemon rule, as that
	copies it rather than moves it.
	* debian/rules (binary-arch): Move start-stop-daemon into sbin
	my hand.

2005-06-12  Scott James Remnant  <scott@netsplit.com>

	* configure.ac: Bump version to 1.13.10~.

	* configure.ac: Release 1.13.9.

2005-06-11  Scott James Remnant  <scott@netsplit.com>

	* scripts/dpkg-source.pl: Add .arch-inventory to default diff
	ignore regexp.

	* scripts/dpkg-source.pl: If two arguments are given to dpkg-source,
	use the second to set $newdirectory rather than creating it ourselves.
	It's an error to specify an output directory that exists.
	(usageversion): Document optional second argument to dpkg-source -x.
	
	* man/C/dpkg-source.1: Document optional second argument.

2005-06-11  Matt Kraai  <kraai@alumni.cmu.edu>,
	    Scott James Remnant  <scott@netsplit.com>

	* scripts/dpkg-source.pl: Move the .orig directory out of the way
	during the duration of the script, moving it back again afterwards.

2005-06-11  Brendan O'Dea  <bod@debian.org>

	Support unpacking of "Wig And Pen" (Format: 2.0) source packages.

	* scripts/dpkg-source.pl: When unpacking a source package with a
	2.x format, allow multiple orig tarballs and allow the diff to be
	replaced by a debian.tar.  Additional orig tarballs are named
	"*.orig-xxx.tar" where the "xxx" is the name of the sub-directory
	of the source where they should be unpacked.  The debian.tar is
	unpacked as the debian sub-directory of the source and may contain
	binaries (which the diff can't) and patches (in a patches
	sub-directory) which are automatically applied during unpacking.
	(checkdiff): Move diff checking code into sub-routine as we call
	it multiple times now.  Allow uncompressed patches, cruft
	at the start of a patcha and be less strict about patched directory
	name (including allowing /dev/null).  Skip "Index:" header generated
	by CVS.
	(forkgzipread): Run either gunzip or bunzip2 depending on the
	filename, allowing us to support .tar.bz2, and .diff.bz2.
	(handleformat): Compare a range of major versions, as we now
	support both 1.0 and 2.0 formats.
	(def_dscformat): Generate 1.0 format packages by default.
	(setfile): Removed unused function.
	* debian/control ([dpkg-dev]Recommends): Recommend bzip2, it's
	not an absolute dependency until bz2 packages are supported by
	katie and policy.

2005-06-11  Scott James Remnant  <scott@netsplit.com>

	* m4/libs.m4 (DPKG_LIB_ZLIB, DPKG_LIB_BZ2): Rewrite to match the
	way --with-selinux works.  Actually check whether the library and
	header files we need are available, using the configure option to
	determine whether the tests should be skipped (=no) or cause a
	hard failure if not present (=yes or =static).
	* lib/Makefile.am (INCLUDES): Remove ZLIB_CFLAGS and BZ2_CFLAGS as
	we don't set these to anything in configure anymore (WITH_ZLIB and
	WITH_BZ2 are set in config.h) and users would set CFLAGS itself to
	supply missing -I arguments.
	* dpkg-deb/Makefile.am (INCLUDES): Remove ZLIB_CFLAGS and BZ2_CLFAGS.
	* src/Makefile.am (dpkg_query_LDADD): Remove ZLIB_LIBS and CFLAGS_LIBS
	as dpkg-query doesn't use them.

	* m4/libs.m4 (DPKG_LIB_SELINUX): Add new test for the selinux
	library and header.  This works a little differently from the
	current --with-{zlib,bz2} tests in that if no option is given it
	still tries to enable it if possible.  If "yes" or "static" is given,
	that forces the requirement (configure fails if not present), if "no"
	is given the tests are skipped.
	* configure.ac: Include selinux test.

2005-06-11  Manoj Srivastava  <srivasta@debian.org>

	* lib/star.c (ExtractFile, SetModes): If dpkg is compiled with
	SELinux, test once whether SELinux is enabled on the system.  If it
	is enabled, find out the security context of the file from its path
	and either set what we think it should be or let the default security
	context for the process be applied.
	* debian/control (Build-Depends): Add libselinux1-dev as a build
	dependency. 
	* debian/rules: Compile-in support for selinux and link statically.
	* dpkg-deb/Makefile.am (dpkg_deb_LDADD): Link dpkg-deb with
	SELINUX_LIBS.
	* src/Makefile.am (dpkg_LDADD): Link dpkg with SELINUX_LIBS.

2005-06-10  Scott James Remnant  <scott@netsplit.com>

	* lib/dbmodify.c (log_message): New function that writes a
	formatted string to the log file, opening it if it hasn't been
	yet.  In case of error, we print it and don't try to open the
	file again.
	(modstatdb_note): Replace log writing code with call to new
	log_message function.
	* src/configure.c (promptconfaction): Replace log writing code
	with call to log_message function.
	* src/help.c (log_action): Simplify to just a log_message call.
	* lib/dpkg-db.h: Remove extern definition of log_pipes, replace
	with log_message function.
	* src/main.c (cmdinfos): Change --log argument action to just
	storing the string in the log_file variable.
	(setfile): Remove function.
	* lib/myopt.c (myfileopt): strdup the string option argument
	before storing it, otherwise it just gets overwritten by the next
	line.

	* configure.ac: Bump version to 1.13.9~.

	* configure.ac: Release 1.13.8.

	* lib/parse.c (parsedb): Check whether the file size is greater
	than zero bytes in size before trying to mmap or malloc it, if it
	isn't don't process the file.

2005-06-09  Scott James Remnant  <scott@netsplit.com>

	* configure.ac: Bump version to 1.13.8~.

	* configure.ac: Release 1.13.7.

	* src/main.c (setfile): Make inability to open the log file a
	warning only, rather than bailing out; and if not running as root,
	don't even show the warning.

2005-06-09  Colin Watson  <cjwatson@ubuntu.com>

	* man/C/dpkg-architecture.1: Include example debian/rules snippet
	to support older versions of dpkg-dev after updating to use new
	variables.

2005-06-09  Scott James Remnant  <scott@netsplit.com>

	* man/C/dpkg-architecture.1: Clean up examples using .nf and .fi
	to produce a pre-like effect.  Indent the examples a little.

2005-06-06  Scott James Remnant  <scott@netsplit.com>

	* configure.ac: Bump version to 1.13.7~.

	* debian/dpkg.install: Don't use dh_install to copy the logrotate
	file because it can't rename things.
	* debian/rules (binary-arch): Install and rename manually instead.
	* configure.ac: Release 1.13.6 (Brown Paper Bag).

	* configure.ac: Bump version to 1.13.6~.

	* configure.ac: Release 1.13.5.

2005-06-06  Philippe Batailler  <philippe.batailler@free.fr>

	* man/fr/*: All french man pages updated

2005-06-06  Christian Perrier  <bubulle@debian.org>

	* man/pt_BR/update-alternatives.8: Syntax error corrected.

2005-06-06  Kevin Ryde  <user42@zip.com.au>

	* man/sv/dpkg-deb.1: Syntax error corrected.
	* man/es/dpkg-scanpackages.1: Syntax error corrected.

2005-06-06  Scott James Remnant  <scott@netsplit.com>

	* src/configure.c (promptconfaction): Record user's decision about
	a conffile in the log file as either "install" or "keep".
	* man/C/dpkg.1: Document the conffile output that'll appear in the
	log file.

	* debian/dpkg.cfg: Create a log-file by default.
	* debian/dpkg.logrotate: Include a logrotate file for the log.
	* debian/dpkg.install: Install the debian/dpkg.logrotate file as
	/etc/logrotate.d/dpkg
	* Makefile.am (EXTRA_DIST): Ship the debian/dpkg.logrotate file.
	* debian/dpkg.preinst (create_logfile): Create a log file with
	the default permissions.
	* debian/dpkg.postrm (remove_logfile): Remove log files when dpkg
	is purged (not that it will happen, but it pays to be compliant).
	
	* debian/dpkg.preinst (confirm_dselect_split): Only check process
	list for dselect if ps is installed; this should be the case during
	upgrades anyway.

	* debian/dpkg.prerm (undivert_md5sum): Remove md5sum diversion
	when the package is removed or downgraded to a version where
	we supplied our own md5sum.
	* debian/dpkg.postinst (divert_md5sum): Divert md5sum as long as
	there isn't one, don't explicitly check for the textutils file
	being there as it may be installed afterwards.

2005-05-26  Scott James Remnant  <scott@netsplit.com>

	* debian/control (Maintainer): I'm going to officially take blame for
	this package Ian-style, we'll keep bugs going to the list using the
	PTS instead.

2005-05-25  Scott James Remnant  <scott@netsplit.com>

	* scripts/dpkg-source.pl: Recognise Enhances in the package's
	section of control files.

2005-05-23  Scott James Remnant  <scott@netsplit.com>

	* cputable: Change GNU name of the i386 CPU to i486, to reflect
	reality.
	* debian/archtable: Update first field of i386 and hurd-i386 to
	use i486 as the CPU name.

2005-04-03  Scott James Remnant  <scott@netsplit.com>

	* scripts/dpkg-architecture.pl (gnu_to_debian): Check cputable
	and ostable in file order.
	* ostable: Place hurd at the bottom so it's checked last.

2005-03-29  Scott James Remnant  <scott@netsplit.com>

	* configure.ac: Bump version to 1.13.5~.

	* configure.ac: Release 1.13.4.

2005-03-28  Scott James Remnant  <scott@netsplit.com>

	* scripts/dpkg-architecture.pl: Catch -L and list every possible
	os and cpu combination.
	(usageversion): Add -L option to description.
	(read_cputable): Add in-order list of cpu values to @cpu array.
	(read_ostable): Add in-order list of os values to @os array.
	* man/C/dpkg-architecture.1: Document -L option.

2005-03-27  Scott James Remnant  <scott@netsplit.com>

	* m4/arch.m4 (DPKG_OS_TYPE): Allow a vendor to appear at the start
	of $os_type.
	* scripts/dpkg-architecture.pl (gnu_to_debian): Don't strip the
	vendor out, just allow it to appear at the start of the string.

2005-03-21  Scott James Remnant  <scott@netsplit.com>

	* configure.ac: Bump version to 1.13.4~.

	* configure.ac: Release 1.13.3.

	* scripts/controllib.pl (unknown): Output field name we have in
	hand, rather than trying to look it up in a dictionary in which
	it doesn't exist yet.

	* scripts/changelog/debian.pl: Revert accidental half-patch that
	turned the Maintainer field into a Changed-By field.

2005-03-21  Marc Dequènes  <duck@duckcorp.org>

	* scripts/dpkg-gencontrol.pl: Fix filename regexp to allow '-'
	in architecture names.

2005-03-20  Scott James Remnant  <scott@netsplit.com>

	* scripts/dpkg-buildpackage.sh: Output "source changed by"
	rather than "source maintainer is".

	* man/C/dpkg.1: Document that --get-selections takes a package
	name pattern.  Document format of file --set-selections takes.

	* man/C/dpkg-source.1: Remove unnecessary references to policy
	and non-existent packaging manual.  Refer to dpkg-shlibdeps(1)
	for shlibs file format.  Will need to document changelog format
	at some point.
	* man/C/dselect.1: Remove unnecessary reference to policy, refer
	other reference to the package by name.
	* man/C/deb-old.5: Remove reference to non-existent packaging
	manual.
	* man/C/deb.5: Remove reference to non-existent packaging
	manual, will have to document control contents better here later.

	* man/C/dpkg.1: Fix typo (fileis -> file is).

	* origins/debian: Remove trailing line.

2005-03-20  Mathias Weidner  <mathias@weidner.in-bad-schmiedeberg.de>

	* scripts/dpkg-scansources.pl (getopt): Add (@) to prototype.

2005-03-20  Scott James Remnant  <scott@netsplit.com>

	* man/C/update-alternatives.8: Document what the '+' and '*'
	marked choices in --config output mean.

	* src/main.c (usage): Make aptitude quoting consistent.

	* man/C/dpkg-divert.8: Mention --truename alongside the comment
	about what it does.

	* src/main.c (printforhelp): Mention aptitude alongside dselect.
	* dpkg-deb/main.c (usage): Mention aptitude alongside dselect.

	* lib/ehandle.c (warningf): Add missing newline to end of format
	string.

	* man/C/update-alternatives.8: Harmonise names for arguments to
	--install option.

	* man/C/dpkg.1: Remove "medium-level" from dpkg's description,
	it's somewhere between medium and low.  The fact it's a package
	manager is sufficient description.

	* src/query.c (listpackages): Create a second filtered list of
	packages, sort that (rather than the complete list) and use that
	when calling list1package.  This means we only expand to the
	longest field in the result, not the database.  Hopefully the
	speed gain of only sorting a filtered list outweights the slighty
	extra computation time.

2005-03-18  Scott James Remnant  <scott@netsplit.com>

	* configure.ac: Bump version to 1.13.3~.

	* configure.ac: Release 1.13.2.

	* src/query.c (getwidth): Return -1 if we're not on a tty.
	(list1package): Take a package list as well, and if getwidth()
	returns -1 determine the longest name, version and description
	and use those for output.
	(listpackages): Pass the package list and length to both
	calls to list1package to allow them to go wide.

	* lib/dbmodify.c (modstatdb_note): Every time we'd output a
	status change to the status-fd, also output a log message to
	the log-fd if we have one.
	* lib/dpkg-db.h: Add definition of log_pipes.
	* src/help.c (log_action): Write an action line to the log-fd.
	* src/processarc.c (process_archive): Log installation and
	upgrade actions.
	* src/remove.c (removal_bulk_remove_configfiles): Log purge
	action.
	(deferred_remove) Log remove action.
	* src/main.c (setfile): Take a filename, open it and add the
	file descriptor to a list of pipes.
	(cmdinfos): Add log command-line option that takes a filename
	and adds it to log_pipes.
	(usage): Add --log=<filename> usage.
	* man/C/dpkg.1: Document --log=filename.
	* debian/dpkg.cfg: Include a commented-out log option.

2005-03-18  Peter van Dijk  <peter@dataloss.nl>

	* lib/tarfn.c (TarExtractor): Only remove the last character
	from directory names if it's a trailing slash.

2005-03-18  Scott James Remnant  <scott@netsplit.com>

	* man/C/dpkg-divert.8: Add an EXAMPLES section giving the two
	most common uses of dpkg-divert, for both add and remove.

	* man/C/dpkg-architecture.1: Update (should have done this with
	the changes below, really).

	* src/help.c (preexecscript): The first member of argv is always
	NULL because it's filled in by the return value of this function,
	so increment argv first when debug-outputting maintainer script
	arguments.

	* utils/md5sum.c: Remove file.
	* lib/dpkg.h (MD5SUM): Remove definition of md5sum program name.
	* utils/Makefile.am (bin_PROGRAMS): Remove md5sum.
	* man/C/md5sum.1: Remove manual page.
	* man/C/Makefile.am (dist_man_MANS): Remove md5sum.1.
	* man/de/md5sum.1: Remove manual page.
	* man/de/Makefile.am (dist_man_MANS): Remove md5sum.1.
	* man/es/md5sum.1: Remove manual page.
	* man/es/Makefile.am (dist_man_MANS): Remove md5sum.1.
	* man/ja/md5sum.1: Remove manual page.
	* man/ja/Makefile.am (dist_man_MANS): Remove md5sum.1.
	* man/sv/md5sum.1: Remove manual page.
	* man/sv/Makefile.am (dist_man_MANS): Remove md5sum.1.
	* debian/dpkg.postinst (divert_md5sum): Divert the version of
	md5sum installed by textutils or coreutils to the place where we
	used to put our copy, include its manual page.
	* debian/control ([dpkg]Depends): Depend on coreutils, which has
	always included md5sum, or the version of textutils that has.
	* debian/dpkg.install: Remove md5sum-related files.
	* debian/copyright: Remove mentions of utils/md5sum.c.
	* debian/pseudo-tags: Remove md5sum tag; no point filing bugs on
	a non-existent program.

	* ostable (netbsd): Restore missing "*" on the end of the regex.

	Take a further step towards having separate CPU and system names
	instead of just a joined architecture name; in particular add
	support to dpkg-architecture.

	* cputable: Create new table of cpu names with canonical GNU
	names and a regex to match against config.guess output.
	* ostable: Create new table of operating system names with
	canonical GNU names and a regex to match against config.guess
	output.
	* archtable: Move to debian directory.
	* debian/archtable: Reduce to a simple set of architecture names
	in Debian's sid distribution.
	* scripts/dpkg-architecture.pl: Add support for split cputable
	and ostable, including new DEB_*_ARCH_OS and DEB_*_ARCH_CPU
	variables containing the Debian system and cpu names appropriately.
	(usageversion): Remove list of known architectures, as we can't
	easily compute this anymore (cputable * ostable).
	(read_archtable): Removed function, we no longer touch archtable.
	(read_cputable): Add function to parse cputable.
	(read_ostable): Add function to parse ostable.
	(split_debian): Add function to split a Debian "os-cpu" name.
	(debian_to_gnu): Add function to split and look up the GNU names
	for the Debian os and cpu, and return the joined GNU name.
	(split_gnu): Add function to split a GNU triplet/quartet.
	(gnu_to_debian): Add function to split and look up the Debian
	names for the GNU os and cpu (by regex), and return the joined
	Debian name.
	(rewrite_gnu): Removed, replaced by regexes in the tables.
	* m4/arch.m4 (DPKG_CPU_TYPE): Use awk to parse the new cputable
	and define an ARCHITECTURE_CPU macro with the result.
	(DPKG_OS_TYPE): Use awk to parse the new ostable and define an
	ARCHITECTURE_OS macro with the result.
	(DPKG_ARCHITECTURE): Simply join the os and cpu names together,
	or omit the os name if "linux".
	* Makefile.am (dist_pkgdata_DATA): Remove archtable, add
	cputable and ostable instead.
	(EXTRA_DIST): Add debian/archtable.
	* debian/dpkg.install: Install debian/archtable in /usr/share/dpkg
	for packages that still want it.
	* debian/pseudo-tags: Replace mention of archtable.

	* archtable: Add ppc64 for powerpc-linux.
	* scripts/dpkg-architecture.pl (rewrite_gnu): Rewrite powerpc64
	and ppc64 into powerpc64 for archtable.

2005-03-17  Scott James Remnant  <scott@netsplit.com>

	* debian/dpkg.preinst (confirm_dselect_split): Check that dselect
	is running before bitching; it's easy to do and will stop this
	question more often than not.

2005-03-17  Scott James Remnant  <scott@ubuntu.com>,
	    Anthony Towns  <aj@azure.humbug.org.au>

	* src/archives.c (tarobject): Detect when installing a file that
	exists in a package that replaces the one being installed.  Leave
	that on the disk and remove the file from the list for the package
	being installed.

2005-03-16  Scott James Remnant  <scott@netsplit.com>

	* lib/parsedump.h: Move definitions of fieldinfos and nicknames
	arrays to the bottom of the file, to ensure we know the size of
	the arrays we're declaring.
	* lib/mlib.c (buffer_write): Cast unsigned char * to plain old
	char * when calling sprintf.

2005-03-12  Frank S. Thomas  <frank@thomas-alfeld.de>

	* man/C/dpkg-architecture.1: Correct typo (variales -> variables).

2005-03-08  Scott James Remnant  <scott@netsplit.com>

	* Makefile.am (package): Remove rule, as it is only really
	required outside of arch (otherwise you have a tarball).
	* Makefile.maint: New file holding the package rule.

2005-03-03  Scott James Remnant  <scott@netsplit.com>

	* archtable: Describe column 2 as the value returned by
	dpkg --print-architecture not --print-installation-architecture
	which we deprecated in the last release.

	* configure.ac: Bump version to 1.13.2~.

	* configure.ac: Release 1.13.1.

2005-03-03  Michael Vogt  <mvo@ubuntu.com>

	* src/configure.c (promptconfaction): Output conffile-prompt
	status onto status-fd to let front-ends capture conflicts.
	* src/errors.c (print_error_perpackage): Output package errors
	onto status-fd to let front-ends capture them.
	* man/C/dpkg.1: Document how errors and configuration file
	conflicts are reported on the status-fd.

2005-01-22  Scott James Remnant  <scott@netsplit.com>

	* man/C/dpkg.1: Remove --print-gnu-build-architecture and
	--print-installation-architecture from documentation, correct
	--print-architecture.
	* man/C/dpkg-architecture.1: Give --print-architecture in examples,
	instead of --print-installation-architecture.
	* scripts/dpkg-name.sh (getname): Call 'dpkg --print-architecture'
	instead of 'dpkg --print-installation-architecture'.
	* scripts/dpkg-architecture.pl: Set the default $pkgdatadir to
	point at an installed copy.
	Call 'dpkg --print-architecture' instead of
	'dpkg --print-installation-architecture'.
	* methods/disk/setup (iarch): Call dpkg --print-architecture.
	* debian/control ([dpkg-dev]Depends, [dselect]Depends): Depend on
	dpkg (>= 1.13.1) so we get a dpkg with the right print options.

	* src/enquiry.c (printarch): Completely nuke this function, we'll
	no longer parse the compiler output and look up things in archtable.
	(printinstarch): Rename to printarch, and change the output message
	to refer to --print-architecture.
	(badlgccfn): Remove unused function.
	* src/main.c (cmdinfos): Remove --print-gnu-build-architecture option,
	make --print-installation-architecture call printarch.
	(usage): Remove both --print-gnu-build-architecture and
	--print-installation-architecture and describe --print-architecture
	as doing what --p-i-a used to do.  Use dpkg-architecture for host
	information.
	* src/main.h (action): Remove act_printgnuarch from enum, leave
	act_printinstarch so we can later deprecate use of the longer command.
	* src/Makefile.am (archtable.h): No need to generate archtable.h
	seeing as we don't parse it within dpkg, remove rule to generate it.
	(CLEANFILES): We don't generate archtable.h, so no need to clean it.
	* src/.arch-inventory: Don't treat archtable.h specially.
	* archtable: Remove unused third field, entirely inaccurate too.
	Correct typo 'she3eb' -> 'sh3eb'.
	* scripts/dpkg-architecture.pl (read_archtable): Parse only two
	fields from archtable.

	* scripts/dpkg-architecture.pl: Remove out-of-date history from the
	top, ChangeLog serves better now and is less confusing.
	Reset $gcc if we get less than, or more than one archtable result.
	Remove extra newline from mismatched -a/-t warning.
	(usageversion): Pedant the usage message while we scroll past.
	(read_archtable): New function to read /usr/share/dpkg/archtable
	rather than hard-coding some values in the script.
	(rewrite_gnu): Rewrite along the lines of the code in m4/arch.m4 so
	they should actually be vaguely consistent now.

	* scripts/Makefile.am (do_perl_subst): Replace occurrences of
	$pkgdatadir in scripts with the right value.

2005-01-22  Robert Millan  <rmh@debian.org>

	* configure.ac: Check for kvm.h.
	* utils/start-stop-daemon.c: Remove includes for <sys/user.h>,
	<sys/sysctl.h> and <kvm.h> for the BSDs unless configure found
	<kvm.h>.
	(fatal): Output the message associated with errno.

2005-01-22  Rakesh 'arky' Ambati  <rakesh_ambati@yahoo.com>

	* scripts/dpkg-architecture.pl: Correct typo, 'filed' to 'failed'.

2005-01-22  Robert Millan  <rmh@debian.org>,
	    Scott James Remnant  <scott@netsplit.com>

	* m4/arch.m4 (DPKG_CPU_TYPE): Add a new macro to turn common
	groups of CPU names into a single type (e.g. i*86 to i386).
	(DPKG_OS_TYPE): Match linux*-gnu* for Linux (in case we get a
	non-GNU Linux at some point) and produce a 'linux' type.  Remove
	the initial '*' from the rest of the entries.  Restore gnu* as
	gnu (for the Hurd).  Add support for darwin* as darwin.  Sort
	into almost-alphabetical order with i386/linux at the top.
	(DPKG_ARCHITECTURE): Call DPKG_CPU_TYPE and use $cpu_type instead of
	$target_cpu.
	* archtable: Rewrite the top comment to be a little clearer and
	correct the lie that the third column is 'dpkg --print-architecture'
	when it is, in fact, 'dpkg --print-gnu-build-architecture'.  Correct
	third columns of the non-Linux architecture to actually return a
	GNU name.  Sort the file into i386/linux-first alphabetical order.

2005-01-22  Robert Millan  <rmh@debian.org>

	* archtable: Add x86_64-kfreebsd to archtable as 'kfreebsd-amd64'.
	* scripts/dpkg-architecture.pl: Add 'kfreebsd-amd64' to archtable.

2005-01-22  NIIBE Yutaka  <gniibe@fsij.org>

	* archtable: Add m32r-linux-gnu to archtable as 'm32r'.
	* scripts/dpkg-architecture.pl: Add 'm32r' to archtable.

2005-01-22  Scott James Remnant  <scott@netsplit.com>

	* src/query.c (cmdinfos): Make -f alternative for --showformat.
	* src/query.c (usage): Document that -f is alternative for
	--showformat.
	* man/C/dpkg-query.1: Update documentation to match.

2005-01-22  Stephane Bortzmeyer  <stephane@sources.org>

	* scripts/dpkg-source.pl (diff_ignore_default_regexp): Add the
	darcs _darcs directory to the ignore list.

2005-01-22  Scott James Remnant  <scott@netsplit.com>

	* utils/md5sum.c (main): Correct md5sum according to the wishes
	of the Debian technical committee; when given a file on standard
	input, it now simply outputs the md5sum and does not append "  -"
	or " *-" on the end.

2005-01-22  Adam Heath  <doogie@debian.org>

	* lib/tarfn.c (TarExtractor): Fix handling of GNU longname and
	longlink support when there is both types for the same file entry
	in a tarball.

2005-01-19  Dafydd Harries  <daf@muse.19inch.net>

	* man/C/dpkg-source.1: Make the summary for dpkg-source -b invocation
	in the manpage match that output by dpkg-source --help. (I.e. indicate
	the possibility of specifying the upstream tarball rather than the
	upstream source directory as a second parameter.)

2005-01-17  Scott James Remnant  <scott@netsplit.com>

	* debian/dpkg.preinst (confirm_dselect_split): Support pre-sarge
	upgrades by checking that they've upgraded dselect first, and
	prompting if they haven't.

2005-01-14  Scott James Remnant  <scott@netsplit.com>

	* .arch-inventory: Ignore the upload result file as well.

	* configure.ac: Bump version to 1.13.1~.

	* configure.ac: Release 1.13.0.

	* dpkg-deb/main.c (main): Remove NONRETURNING declaration as
	this function does actually call return sometimes.
	* dpkg-split/main.c (main): Remove NONRETURNING declaration as
	this function does actually call return sometimes.
	* utils/start-stop-daemon.c (main): Remove NONRETURNING declaration
	as this function does actually call return sometimes.
	* m4/compiler.m4 (SJR_COMPILER_WARNINGS): Enable warnings for CXX
	too, my original macro doesn't do this.
	
	* configure.ac: Use AC_GNU_SOURCE to get some of the extra goodies
	in the GNU C library, use DPKG_C_C99 to test for C99 features.
	* m4/compiler.m4 (DPKG_C_C99): New macro to determine whether
	compiler supports C99 features.
	(SJR_COMPILER_WARNINGS): Don't use -pedantic yet, dpkg isn't ready
	for it.

	* lib/dpkg.h: Provide C99-conformant variadic macros if the
	compiler supports them in place of gnu-style ones.
	* lib/tarfn.c: Add missing include of config.h to get some useful
	information (and prototype of strnlen).
	* src/help.c: Cast arguments to (char * const *) explicitly.
	* dpkg-deb/main.c: Include dpkg-db.h to get nffreeall prototype.
	* .arch-inventory: Ignore config.cache if the user uses it.

	* scripts/controllib.pl: Add #!/usr/bin/perl to satisfy lintian.
	* debian/control ([dpkg]Pre-Depends): Needs to pre-depend on shlibs
	dependencies like libc6, accidentally dropped earlier.
	([dpkg-dev]Recommends): Added gcc as first choice for c-compiler.
	* debian/rules: Generate shlibdeps for all arch packages, not just
	dselect (so we get them for dselect too).
	* debian/.arch-inventory: Ignore dpkg.substvars.
	* debian/dpkg.conffiles: Removed, debhelper does the right thing.
	* debian/dpkg-dev.conffiles: Removed, debhelper does the right thing.
	* debian/dselect.conffiles: Removed, debhelper does the right thing.
	* Makefile.am (EXTRA_DIST): Updated for debian directory changes.
	(package): Add missing distdir dependency, also don't treat lintian
	problems as errors, just report them.
	* man/C/dpkg.8: Moved to section 1 where it belongs.
	* man/C/dpkg-query.8: Moved to section 1 where it belongs.
	* man/C/dpkg-split.8: Moved to section 1 where it belongs.
	* man/C/dselect.8: Moved to section 1 where it belongs.
	* man/C/Makefile.am: Install dpkg.1, dpkg-query.1, dselect.1
	* man/es/dpkg.8: Moved to section 1 where it belongs.
	* man/es/dpkg-split.8: Moved to section 1 where it belongs.
	* man/es/dselect.8: Moved to section 1 where it belongs.
	* man/es/Makefile.am: Install dpkg.1, dpkg-split.1, dselect.1
	* man/fr/dpkg.8: Moved to section 1 where it belongs.
	* man/fr/dpkg-query.8: Moved to section 1 where it belongs.
	* man/fr/dpkg-split.8: Moved to section 1 where it belongs.
	* man/fr/Makefile.am: Install dpkg.1, dpkg-query.1, dpkg-split.1
	* man/ja/dpkg.8: Moved to section 1 where it belongs.
	* man/ja/dpkg-query.8: Moved to section 1 where it belongs.
	* man/ja/dselect.8: Moved to section 1 where it belongs.
	* man/ja/Makefile.am: Install dpkg.1, dpkg-query.1, dselect.1
	* man/pt_BR/dpkg.8: Moved to section 1 where it belongs.
	* man/pt_BR/dselect.8: Moved to section 1 where it belongs.
	* man/pt_BR/Makefile.am: Install dselect.1, dpkg.1
	* man/ru/dpkg.8: Moved to section 1 where it belongs.
	* man/ru/Makefile.am: Install dpkg.1
	* man/sv/dpkg.8: Moved to section 1 where it belongs.
	* man/sv/dpkg-query.8: Moved to section 1 where it belongs.
	* man/sv/dpkg-split.8: Moved to section 1 where it belongs.
	* man/sv/dselect.8: Moved to section 1 where it belongs.
	* man/sv/Makefile.am: Install dpkg.1, dpkg-query.1, dpkg-split.1,
	dselect.1
	* debian/dpkg.install: Install dpkg.1, dpkg-query.1, dpkg-split.1
	* debian/dselect.install: Install dselect.1

	* Makefile.am (EXTRA_DIST): Distribute files in the debian directory
	in the source tarball.
	(package): Create source and binary packages using dpkg-buildpackage
	and some magic to give us a directory containing only 'dist' files.
	Check the resulting changes file with lintian if we have it.

	* .arch-inventory: Apply l33t regex skills to ignore source tarballs,
	packages and the dist directory.

	* utils/Makefile.am (rootsbin_PROGRAMS): Install start-stop-daemon
	into the ordinary sbindir by default.
	* debian/dpkg.install: Install usr/sbin/start-stop-daemon into /sbin.

	* debian/control (Build-Depends): The source tarball now includes
	the generated gmo files, so there's no reason for the package to
	build-depend on gettext.

	* getopt/getdate.c: Remove unused file.

	* methods/disk/update: Remove {...} glob, as it's a bashism.

	* debian/control (Build-Depends): Fix dependency on virtual
	package `libncurses-dev'.

	* m4/funcs.m4 (DPKG_FUNC_VA_COPY): Wrap TRY_RUN and TRY_COMPILE
	calls in AC_CACHE_CHECK, missed when I copied it over and updated.

	* debian/dpkg.prerm: Give the script a bit of a spring clean,
	add a comment block at the top to serve as documentation of how
	prerm is called for anyone wanting a quick reference; this seems
	a reasonable place to do it as any.  Don't remove the historic
	info scripts anymore (dating back to 1.3.3) as we haven't shipped
	them in ages and 1.3.3's upgrade script did it anyway.
	* debian/dpkg.postrm: Equal spring clean and documentation comment
	added to the top.  Removed code to purge dpkg.cfg now we include it
	in the package as a conffile again anyway.
	* debian/dpkg.preinst: Equal spring clean and documentation comment
	added to the top.  Separated each discreet piece of upgrade behaviour
	for the 0.93.50 jump into different functions.
	* debian/dpkg.postinst: Equal spring clean and documentation comment
	added to the top.  Separated each bit of behaviour into a separate
	function.
	(move_info_directory): No longer create symlinks to the new location.
	(remove_info_symlink): Remove /usr/info or /usr/info/dir symlinks.

2005-01-13  Scott James Remnant  <scott@netsplit.com>

	* debian/control (Build-Depends): Add forgotten build-depend on
	debhelper, I picked 4.1.81 after reading the changelog as it has the
	first feature we need (upstream and debian changelogs in a native
	package).

	* man/C/Makefile.am (dpkg_source_aliases): I missed a whole bunch
	of manpages created as aliases to dpkg-source, put the rules in to
	do that.
	* man/C/.arch-inventory: Ignore generated aliased pages.

	* debian/rules: Rewrite from scratch to use debhelper, this breaks
	being able to bootstrap dpkg from its own source directory; but that
	didn't really work anyway.  You can always just 'make install' first.
	* debian/compat: Set debhelper compatibility to v4.
	* debian/dpkg.docs: List documentation to ship with dpkg.
	* debian/dpkg.install: List files that belong to dpkg.
	* debian/dselect.install: List files that belong to dselect.
	* debian/dpkg-dev.install: List files that belong to dpkg-dev.
	* .arch-inventory: Ignore build-tree, created by debian/rules.
	* debian/.arch-inventory: Ignore files and directories created by
	debian/rules.

	* lib/Makefile.am (INCLUDES): Correct sharedstatedir to datadir,
	common-licenses isn't in /usr/com (whatever that is).

	* dpkg-split/Makefile.am (install-data-local): Use $(mkdir_p) instead
	of $(MKINSTALLDIRS), better style.
	* methods/Makefile.am (install-data-local): Use $(mkdir_p) instead of
	$(MKINSTALLDIRS) here too.
	* origins/Makefile.am (install-data-local): And here.
	* scripts/Makefile.am (install-exec-local): Here as well.
	(install-data-local): Likewise.
	* src/Makefile.am (install-data-local): And finally, here too.

	* scripts/Makefile.am: Automake doesn't create out-of-tree output
	directories for us, so do so if it they don't exist (but quiet, like).
	(do_perl_subst): Remove space in #! line.
	* dpkg-split/Makefile.am: Create out-of-tree directories.
	(do_perl_subst): Remove space in #! line.

	* lib/dpkg.h: Include locale.h, for LC_ALL which is expanded in
	a macro here.  This is needed if we build without optimisations
	as libintl.h won't include it for us.

2005-01-12  Scott James Remnant  <scott@netsplit.com>

	* debian/pseudo-tags: Rewrite and clear up, put tags into a decent
	order and add a new [DEPENDS] tag to track dependency handling
	issues.

	* debian/shlibs.default: Clean up.
	* debian/shlibs.override: Clean up.

	* debian/dselect.cfg: Clean up atrocious English spelling.
	* debian/dpkg.cfg: Clean up atrocious English spelling; remove old
	configuration values as this file would be useful to be installed
	to describe its use.
	* debian/dpkg.conffiles: Add dpkg.cfg.

	* debian/copyright: Clean up, utf-8ify and add missing copyright
	declarations.

	* debian/control (Build-Depends): Remove SGML-related tools now	we no
	longer have docs in that format; increase gettext build-dependency to
	0.14.1; remove build-dependency on autotools-dev.
	(Standards-Version): Bump to keep lintian happy, we're conformant.
	([dpkg]Pre-Depends): Remove pre-dependency on dselect put in place
	to ease transition between woody and sarge where dselect was split
	into a separate binary package.
	([dpkg]Suggests): It's about time we suggested apt.
	([dpkg]Description): The dselect program is no longer included in the
	dpkg package, so don't mention it in the description.
	([dselect]Description): Rewrite as dselect is no longer the primary
	interface for package management, and that users may prefer apt-based
	interfaces.

	* debian/control (dpkg-static): The dpkg (and dpkg-deb) binaries
	have been linked statically to zlib for some time, and the
	dpkg-static package hasn't actually been created either.  Remove
	from the control file.

	* debian/control (dpkg-doc): The documentation shipped in the
	dpkg-doc package was rather incomplete and out-of-date, so was
	removed from the distribution.  Remove package from control file.
	* debian/dpkg-doc.doc-base: Remove dpkg-doc file.
	* debian/dpkg-doc.postinst: Remove dpkg-doc maintainer script.
	* debian/dpkg-doc.prerm: Remove dpkg-doc maintainer script.
	* debian/README.compile: Removed this file as it's both out of
	date, and entirely replaced by Build-Depends anyway for those
	that care about such things.

	* Makefile.am: Remove rules to install common documentation and
	licence under /usr/share/doc/dpkg, leave that up to the package.
	* lib/Makefile.am (INCLUDES): Define COPYINGFILE to point to
	/usr/share/common-licenses/GPL-2.

2005-01-11  Colin Watson  <cjwatson@debian.org>

	* dselect/basecmds.cc (baselist::displayhelp): Revert to former
	Space/Enter/'Q' behaviour, so that Space leaves the help screen
	and Enter and 'Q' do nothing. It's dangerous to encourage users
	to press Enter or 'Q', since they commit changes in the package
	selection screen.
	* dselect/helpmsgs.cc (hlp_readonlyintro, hlp_recurintro): Update
	help text to match.
	(hlp_mainintro): 'Q' quits and overrides dependency problems;
	'X' quits without saving changes.

2005-01-10  Scott James Remnant  <scott@netsplit.com>

	* configure.ac: Fix --without-dselect and --without-start-stop-daemon
	so they actually work, Autoconf was preserving the old value of the
	variable.  Always call AC_PROG_CXX otherwise things aren't happy
	as it gets partially expanded.

	* dpkg-split/Makefile.am (EXTRA_DIST): Distribute mksplit.pl.
	* dselect/Makefile.am (EXTRA_DIST): Distribute mkcurkeys.pl.
	* lib/Makefile.am (libdpkg_a_SOURCES): Distribute gettext.h.
	* scripts/Makefile.am (EXTRA_DIST): Distribute the scripts and
	README.alternatives, oops.
	(all-local): Build install-info from install-info.pl manually.
	(install-exec-local): Install install-info manually.
	(uninstall-local): Remove install-info manually.
	* scripts/.arch-inventory: Ignore install-info-stamp file we need.
	* src/Makefile.am (dpkg_query_SOURCES): There is no errors.h.

	* Makefile.conf.in: Remove file used by old build system.
	
	* lib/mlib.c (buffer_write): Remove cast from lvalue, deprecated
	in recent versions of gcc.
	* m4/compiler.m4 (SJR_COMPILER_OPTIMISATIONS): Explicitly set -O0
	when disabling compiler optimisations, as recent versions of gcc
	have some on by default.

	Now we're not using CVS at all, replace the old .cvsignore files
	with .arch-inventory files Arch can use to ignore generated files.

	* .cvsignore: Remove old file.
	* .arch-inventory: Replace with more complete regex rules.
	* dpkg-deb/.cvsignore: Remove old file.
	* dpkg-deb/.arch-inventory: Replace with more complete regex rules.
	* dpkg-split/.cvsignore: Remove old file.
	* dpkg-split/.arch-inventory: Replace with more complete regex rules.
	* dselect/.cvsignore: Remove old file.
	* dselect/.arch-inventory: Replace with more complete regex rules.
	* getopt/.cvsignore: Remove old file.
	* getopt/.arch-inventory: Replace with more complete regex rules.
	* lib/.cvsignore: Remove old file.
	* lib/.arch-inventory: Replace with more complete regex rules.
	* m4/.arch-inventory: Ignore files copied in by 'autopoint'.
	* man/.cvsignore: Remove old file.
	* man/.arch-inventory: Replace with more complete regex rules.
	* man/C/.cvsignore: Remove old file.
	* man/C/.arch-inventory: Replace with more complete regex rules.
	* man/de/.cvsignore: Remove old file.
	* man/de/.arch-inventory: Replace with more complete regex rules.
	* man/es/.arch-inventory: Ignore generated 'Makefile' and 'Makefile.in'.
	* man/fr/.cvsignore: Remove old file.
	* man/fr/.arch-inventory: Replace with more complete regex rules.
	* man/ja/.cvsignore: Remove old file.
	* man/ja/.arch-inventory: Replace with more complete regex rules.
	* man/pt_BR/.cvsignore: Remove old file.
	* man/pt_BR/.arch-inventory: Replace with more complete regex rules.
	* man/ru/.cvsignore: Remove old file.
	* man/ru/.arch-inventory: Replace with more complete regex rules.
	* man/sv/.cvsignore: Remove old file.
	* man/sv/.arch-inventory: Replace with more complete regex rules.
	* methods/.cvsignore: Remove old file.
	* methods/.arch-inventory: Replace with more complete regex rules.
	* origins/.arch-inventory: Ignore generated 'Makefile'
	and 'Makefile.in'.
	* po/.cvsignore: Remove old file.
	* po/.arch-inventory: Replace with more complete regex rules.
	* scripts/.cvsignore: Remove old file.
	* scripts/.arch-inventory: Replace with more complete regex rules.
	* scripts/changelog/.arch-inventory: Ignore generated file.
	* src/.cvsignore: Remove old file.
	* src/.arch-inventory: Replace with more complete regex rules.
	* utils/.cvsignore: Remove old file.
	* utils/.arch-inventory: Replace with more complete regex rules.
	
	* man/sv/.check.pl: Remove as it uses CVS to check whether the
	translations are up to date, and we don't use that anymore.
	* dselect/checkunimp.pl: Remove unused file.
	* dselect/keys.c: Remove unused file.
	
	For at least the second time in dpkg's history, convert the build
	system to use GNU Automake.  I'm sure some future maintainer will
	come along and get rid of it again, but for now, Automake is the
	way forward.

	* Makefile.in: Remove old file.
	* Makefile.am: Replace with shiny Automake goodness, don't distribute
	TODO anymore; it's only useful for developers.
	* dpkg-deb/Makefile.in: Remove old file.
	* dpkg-deb/Makefile.am: Replace with shiny Automake goodness, don't
	include rules to build dpkg-deb-static.
	* dpkg-split/Makefile.in: Remove old file.
	* dpkg-split/Makefile.am: Replace with shiny Automake goodness.
	* dselect/Makefile.in: Remove old file.
	* dselect/Makefile.am: Replace with shiny Automake goodness.
	* getopt/Makefile.in: Remove old file.
	* getopt/Makefile.am: Replace with shiny Automake goodness.
	* lib/Makefile.in: Remove old file.
	* lib/Makefile.am: Replace with shiny Automake goodness.
	(libdpkg_a_SOURCES): add refugee files from 'include'.
	* man/Makefile.in: Remove old file.
	* man/Makefile.am: Replace with shiny Automake goodness.
	* man/C/Makefile.in: Remove old file.
	* man/C/Makefile.am: Replace with shiny Automake goodness.
	* man/de/Makefile.in: Remove old file.
	* man/de/Makefile.am: Replace with shiny Automake goodness.
	* man/es/Makefile.in: Remove old file.
	* man/es/Makefile.am: Replace with shiny Automake goodness.
	* man/fr/Makefile.in: Remove old file.
	* man/fr/Makefile.am: Replace with shiny Automake goodness.
	* man/ja/Makefile.in: Remove old file.
	* man/ja/Makefile.am: Replace with shiny Automake goodness.
	* man/pt_BR/Makefile.in: Remove old file.
	* man/pt_BR/Makefile.am: Replace with shiny Automake goodness.
	* man/ru/Makefile.in: Remove old file.
	* man/ru/Makefile.am: Replace with shiny Automake goodness.
	* man/sv/Makefile.in: Remove old file.
	* man/sv/Makefile.am: Replace with shiny Automake goodness.
	* methods/Makefile.in: Remove old file.
	* methods/Makefile.am: Replace with shiny Automake goodness, taking
	into account the new filesystem structure.
	* origins/Makefile.am: New Automake file to install origin files.
	* scripts/Makefile.in: Remove old file.
	* scripts/Makefile.am: Replace with shiny Automake goodness.
	* src/Makefile.in: Remove old file.
	* src/Makefile.am: Replace with shiny Automake goodness, don't
	include rules to build either dpkg-static or dpkg-query-static.
	* utils/Makefile.in: Remove old file.
	* utils/Makefile.am: Replace with shiny Automake goodness, don't
	include rules to build md5sum-static.

	* dpkg-deb/build.c: Replace USE_ZLIB with WITH_ZLIB.
	* dpkg-deb/extract.c: Replace USE_ZLIB with WITH_ZLIB.
	* dpkg-deb/main.c: Remove version.h include.
	* dpkg-split/main.c: Remove version.h include.
	* dselect/main.cc: Remove version.h include.
	* lib/compression.c: Replace USE_ZLIB with WITH_ZLIB and USE_BZ2
	with WITH_ZLIB.
	* src/help.c: Remove version.h include and replace
	USE_START_STOP_DAEMON with WITH_START_STOP_DAEMON.
	* src/main.c: Remove version.h include.
	
	We're going to move to using 'autoreconf' to generate the build
	scripts after a checkout and 'make dist' to get a clean tarball.
	Various files will get copied automatically so there's no point
	having them under version control, they'll still appear in the
	tarballs though.

	* INSTALL: Remove from version control.
	* config.guess: Remove from version control.
	* config.sub: Remove from version control.
	* install-sh: Remove from version control.
	* autogen.sh: Remove unnecessary script, just run 'autoreconf'.
	* release.sh: Remove unnecessary script, just run 'make dist'.

	The old 'configure.in' arranged for a bunch of code to be added
	to the bottom of 'config.h' with the assumption that it'd be
	included everywhere.  That's not good style, the file is only
	supposed to contain settings and not real code.  Put the code in
	real header files and source.

	* lib/dpkg.h: Include <sys/cdefs.h> and <stddef.h> if available.
	(INTERPRETER_MAX): Define to PATH_MAX or 1024 if not available.
	(DPKG_VERSION_ARCH): Define using PACKAGE_VERSION instead of
	DPKG_VERSION, which no longer exists.
	(ADMINDIR): Remove definition, define in Makefiles where needed.
	(CONFIGDIR): Remove definition, define in Makefiles where needed.
	(LIBDIR): Remove definition, define in Makefiles where needed.
	(CONSTANT, PRINTFFORMAT, NONRETURNING, UNUSED, NONRETURNPRINTFFORMAT):
	Define attribute markers used in function prototypes.
	(strerror, strsignal, scandir, alphasort, unsetenv): Define prototypes
	for functions in 'compat.c' if the system lacks them.
	(strtoul, va_copy, WCOREDUMP): Provide compatible macros for functions
	the system lacks.
	(BUILDOLDPKGFORMAT): Define here.
	(_, N_): Include gettext.h and define friendlier macros.
	* lib/gettext.h: Include from gettext distribution useful header
	file that does the heavy lifting of enabling or disabling gettext.
	* lib/md5.h: Add code to define UWORD32 used by this implementation.
	* getopt/error.h (error, error_at_line): Remove printf format
	attribute marker from prototypes to keep the code clean.
	* getopt/getopt.c (store_args_and_env): Remove unused attribute
	marker from function to keep the code clean.
	* utils/md5sum.c: Let gettext.h (included through dpkg.h) do the
	heavy lifting and define the right things for us.
	* utils/start-stop-daemon.c: Duplicate includes of <sys/cdefs.h>
	and <stddef.h> along with attribute marker definitions to avoid
	having to include 'dpkg.h'.
	
	* configure.in: Rename to 'configure.ac' and rewrite from the
	ground-up with Autoconf 2.59 in mind.
	* m4/arch.m4: New file of macros for 'configure.ac':
	(DPKG_OS_TYPE): Code from old 'configure.in' to turn output from
	'config.guess' into an operating system name we recognise.
	(DPKG_ARCHITECTURE): Code from old 'configure.in' to look up
	CPU and operating system name in the 'archtable'.
	* m4/compiler.m4: New file of macros for 'configure.ac':
	(SJR_COMPILER_WARNINGS): Add my standard macro to enable additional
	compiler warnings and treat them as errors.
	(SJR_COMPILER_OPTIMISATIONS): Add my standard macro to allow
	disabling of optimisations.
	(DPKG_C_ATTRIBUTE): Macro to check whether the C compiler supports
	__attribute__, we assume that compilers that do ignore unknown
	attributes like gcc does.
	* m4/funcs.m4: New file of macros for 'configure.ac':
	(DPKG_FUNC_VA_COPY): Code from old 'configure.in' to determine
	whether the system supports va_copy or directly copying the values.
	* m4/libs.m4: New file of macros for 'configure.ac':
	(DPKG_LIB_ZLIB): Rework of old 'configure.in' code to allow the
	user to decide whether to use zlib, and whether to link it statically.
	(DPKG_LIB_BZ2): Rework of old 'configure.in' code to allow the user
	to decide whether to use the bz2 library, and whether to link it
	statically.
	(DPKG_LIB_CURSES): Code from old 'configure.in' to pick the right
	curses library on the system.
	(DPKG_LIB_SSD): Code from old 'configure.in' to look for libraries
	used by start-stop-daemon.
	* m4/linker.m4: New file of macros for 'configure.ac':
	(SJR_LINKER_OPTIMISATIONS): Add my standard macro to enable linker
	optimisations and allow them to be disabled.
	* m4/perl.m4: New file of macros for 'configure.ac':
	(DPKG_PROG_PERL): Macro to locate the Perl interpreter in the PATH,
	or allow the user to specify it with PERL=.
	* m4/types.m4: New file of macros for 'configure.ac':
	(DPKG_TYPE_PTRDIFF_T): Macro to replace obsolete AC_TYPE_PTRDIFF_T
	macro from Autoconf.
	(DPKG_DECL_SYS_SIGLIST): Macro to replace obsolete AC_DECL_SYS_SIGLIST
	macro from Autoconf.
	(DPKG_CHECK_DEFINE): Rework of old 'automake/dpkg.m4' code.
	* version-nr: Remove, version should be changed in configure.ac
	directly.
	* automake: Remove older Autoconf macros.
	
	* po/ChangeLog: Add new ChangeLog to describe changes affecting
	translations and their infrastructure.
	
	* origin: Move to 'origins/debian' so we can ship additional
	origins in future.

	Rearrange changelog parsers under 'scripts' into a separate
	directory so they also don't need to be renamed on installation.

	* scripts/cl-debian.pl: Move to 'scripts/changelog/debian.pl'.

	Rearrange 'methods' directory into the same hierarchy used when
	installed to save having to rename files on installation.

	* methods/disk.desc.cdrom: Move to 'methods/disk/desc.cdrom'.
	* methods/disk.desc.harddisk: Move to 'methods/disk/desc.harddisk'.
	* methods/disk.desc.mounted: Move to 'methods/disk/desc.mounted'.
	* methods/disk.desc.nfs: Move to 'methods/disk/desc.nfs'.
	* methods/disk.install: Move to 'methods/disk/install' and chmod +x.
	* methods/disk.names: Move to 'methods/disk/names'.
	* methods/disk.setup: Move to 'methods/disk/setup' and chmod +x.
	* methods/disk.update: Move to 'methods/disk/update' and chmod +x.
	* methods/floppy.desc.floppy: Move to 'methods/floppy/desc.floppy'.
	* methods/floppy.install: Move to 'methods/floppy/install' and
	chmod +x.
	* methods/floppy.names: Move to 'methods/floppy/names'.
	* methods/floppy.setup: Move to 'methods/floppy/setup' and chmod +x.
	* methods/floppy.update: Move to 'methods/floppy/update' and chmod +x.
	* methods/hd.setup: Remove unused method script.
	* methods/hd.unpack: Remove unused method script.
	* methods/hd.update: Remove unused method script.

	Consolidate the library code into one directory, so the headers are
	alongside the code rather than somewhere else.

	* include/dpkg-db.h: Move to 'lib'.
	* include/myopt.h: Move to 'lib'.
	* include/parsedump.h: Move to 'lib'.
	* include/tarfn.h: Move to 'lib'.
	* include/dpkg.h.in: Move to 'lib' and rename to 'dpkg.h', we'll
	set ADMINDIR, CONFIGDIR and LIBDIR in Makefile where needed as they
	can contain shell paths.
	* include: Remove directory.
	
	* AUTHORS: Add new file detailing the original authors of dpkg and
	the maintainers through the years.
	* COPYING: Update to include correct FSF address.
	* NEWS: Add new file that just points to debian/changelog for major
	changes between releases.
	* README: Add new file to briefly describe the package.

	Instead of scattering manpages throughout the source, we'll keep
	all of the original pages in one place under 'man/C'.  This should
	make it easier to keep track of them, especially translators.

	* dpkg-deb/dpkg-deb.1: Move to 'man/C'.
	* dpkg-split/dpkg-split.8: Move to 'man/C'.
	* dselect/dselect.8: Move to 'man/C'.
	* scripts/822-date.1: Move to 'man/C'.
	* scripts/cleanup-info.8: Move to 'man/C'.
	* scripts/dpkg-architecture.1: Move to 'man/C'.
	* scripts/dpkg-checkbuilddeps.1: Move to 'man/C'.
	* scripts/dpkg-divert.8: Move to 'man/C'.
	* scripts/dpkg-name.1: Move to 'man/C'.
	* scripts/dpkg-scanpackages.1: Move to 'man/C'.
	* scripts/dpkg-scansources.1: Move to 'man/C'.
	* scripts/dpkg-source.1: Move to 'man/C'.
	* scripts/dpkg-statoverride.8: Move to 'man/C'.
	* scripts/install-info.8: Move to 'man/C'.
	* scripts/update-alternatives.8: Move to 'man/C'.
	* src/dpkg-query.8: Move to 'man/C'.
	* src/dpkg.8: Move to 'man/C'.
	* utils/md5sum.1: Move to 'man/C'.
	* utils/start-stop-daemon.8: Move to 'man/C'.
	
	* man/en: Rename directory to 'man/C', reserving country codes for
	manpages that have actually undergone translation.  These are the
	"original" format, and like the strings in the code itself don't
	really belong to any particular locale.

	Continuing the spirit of having only one markup format for manpages,
	fix up the two generated from POD and remove the POD.

	* scripts/dpkg-architecture.1: Generate with pod2man and remove
	damage from the top, turning it into respectable nroff.
	* scripts/dpkg-architecture.pl: Remove POD documentation from script.
	* scripts/dpkg-scansources.1: Generate with pod2man and remove
	damage from the top, turning it into respectable nroff.
	* scripts/dpkg-scansources.pl: Remove POD documentation from script.
	
	Remove the SGML files containing the same content as the manpages,
	but which were never used to generate them.  This avoids confusion,
	and as one markup format is just as good as another, we'll settle
	on nroff's man format.
	
	* man/en/cleanup-info.8.sgml: Remove SGML format documentation.
	* man/en/deb-control.5.sgml: Remove SGML format documentation.
	* man/en/deb-old.5.sgml: Remove SGML format documentation.
	* man/en/deb.5.sgml: Remove SGML format documentation.
	* man/en/dpkg-checkbuilddeps.1.sgml: Remove SGML format documentation.
	* man/en/dpkg.8.sgml: Remove SGML format documentation.
	* man/en/dpkg.cfg.5.sgml: Remove SGML format documentation.
	* man/en/dselect.8.sgml: Remove SGML format documentation.
	* man/en/dselect.cfg.5.sgml: Remove SGML format documentation.
	* man/paths.ent.in: Remove now we have no SGML format pages.

	* attic: Remove historical interest directory, that's what version
	control is for.
	* doc: Remove obsolete, incomplete and out-of-date documentation
	including that licenced under the GFDL (ie the entire directory).
	* md5sum: Remove empty directory.

	* main: Rename directory to 'src' so it's consistent with 'lib'.
	* optlib: Rename directory to 'getopt' as that's what's really in it.
	* split: Rename directory to 'dpkg-split' so it's consistent with
	'dpkg-deb'.

Tue Nov 09 15:23:54 CEST 2004 Christian Perrier <bubulle@debian.org>

  * po/dpkg.pot: msguniq to remove duplicate entries

Tue Nov 09 15:21:54 CEST 2004 Bartosz Fenski aka fEnIo <fenio@o2.pl>

  * po/pl.po: updated

Fri Oct 29 21:55:54 CEST 2004 Carlos Liu <carlos_liu@yahoo.com>

  * po/zh_CN.po: Fix errors

Fri Oct 29 08:58:54 CEST 2004 Bart Cornelis <cobaco@linux.be>

  * po/nl.po: Updated

Fri Oct 29 08:55:54 CEST 2004 Carlos Liu <carlos_liu@yahoo.com>

  * po/zh_CN.po: Mess cleaned

Fri Oct 29 08:50:00 CEST 2004 Christian Perrier <bubulle@debian.org>

  * po/*po: msguniq and msgcat on all files

Thu Oct 28 09:39:00 CEST 2004 Christian Perrier <bubulle@debian.org>

  * po/dpkg.pot: regenerated
  * po/*po: synced with dpkg.pot
  * po/fr.po: complete the translation

Thu Oct 28 15:55:14 BST 2004 Scott James Remnant <scott@netsplit.com>

  * dpkg-deb/dpkg-deb.h: Add '/' onto the end of the COMPAT values for
  bzip2 and tar.

Wed Oct 27 12:22:08 BST 2004 Scott James Remnant <scott@netsplit.com>

  * version-nr, debian/changelog: Bump version to 1.13~.

Wed Oct 27 10:14:29 BST 2004 Scott James Remnant <scott@netsplit.com>

  * version-nr, debian/changelog: Bump version to 1.10.25~.

Wed Oct 27 09:58:27 BST 2004 Scott James Remnant <scott@netsplit.com>

  * lib/compression.c: Which revealed some brown-paper bag issues:
  Replace "BZFILE" with "BZFILE *", "file" with "bzfile"
  and "bzdopen" to "BZ2_bzdopen".

Wed Oct 27 09:49:15 BST 2004 Scott James Remnant <scott@netsplit.com>

  * lib/compression.c: Replace USE_BZ2 with USE_BZ2LIB to match configure.in.

Tue Oct 26 19:24:54 CEST 2004 Havard Korsvoll <korsvoll@skulelinux.no>

  * po/nn.po: Updated

Tue Oct 26 17:24:54 CEST 2004 Carlos Liu <carlos_liu@yahoo.com>

  * po/zh_CN.po: Updated

Tue Oct 26 06:54:54 CEST 2004 Peter Karlsson <peter@softwolves.pp.se>

  * po/sv.po: Updated

Tue Oct 26 06:54:54 CEST 2004 CEST 2004 Piarres Beobide Egana <pi@beobide.net>

  * po/eu.po: updated

Tue Oct 26 06:54:54 CEST 2004 Miguel Figueiredo <elmig@debianpt.org>

  * po/pt.po: Updated

Mon Oct 25 18:26:54 CEST 2004 Miroslav Kure <kurem@upcase.inf.upol.cz>

  * po/cs.po: Updated

Mon Oct 25 18:26:54 CEST 2004 Michael Piefel <piefel@debian.org>

  * po/de.po: updated

Mon Oct 25 18:26:54 CEST 2004 Yuri Kozlov <yuray@id.ru>

  * po/ru.po: Updated

Mon Oct 25 15:09:43 CEST 2004 Trorrr [Héctor Fernández] <trorrr@yahoo.es>

  * po/gl.po: Updated

Mon Oct 25 08:03:00 CEST 2004 Lele Gaifax <lele@nautilus.homeip.net>

  * po/it.po: Updated

Mon Oct 25 07:18:36 CEST 2004 Changwoo Ryu <cwryu@debian.org>

  * po/ko.po: Updated

Mon Oct 25 07:18:36 CEST 2004 Kenshi Muto <kmuto@topstudio.co.jp>

  * po/ja.po: Updated

Mon Oct 25 07:18:36 CEST 2004 Claus Hindsgaul <claus_h@image.dk>

  * po/da.po: Updated

Mon Oct 25 07:18:36 CEST 2004 Javier Fernandez-Sanguino Pena <jfs@dat.etsit.upm.es>

  * po/es.po: Updated

Sun Oct 24 21:51:55 CEST 2004 Jordi Mallach <jordi@debian.org>

  * po/ca.po: Updated Catalan translation.

Sun Oct 24 20:16:43 CEST 2004 Lele Gaifax <lele@nautilus.homeip.net>

  * po/it.po: Updated

Sun Oct 24 20:06:43 CEST 2004 Trorrr [Héctor Fernández] <trorrr@yahoo.es>

  * po/gl.po: Updated

Sun Oct 24 19:20:43 CEST 2004 Bartosz Fenski aka fEnIo <fenio@o2.pl>

  * po/pl.po: Updated

Sun Oct 24 19:20:43 CEST 2004 Andre Luis Lopes <andrelop@debian.org>

  * po/pt_BR.po: Updated

Sun Oct 24 19:20:43 CEST 2004 Bart Cornelis <cobaco@linux.be>

  * po/nl.po: Updated

Sun Oct 24 16:18:52 CEST 2004 Christian Perrier <bubulle@debian.org>

  * po/dpkg.pot: regenerated
  * po/*po: synced with dpkg.pot
  * po/fr.po: complete the translation

Sun Oct 24 09:40:27 CEST 2004 Christian Perrier <bubulle@debian.org>

  * po/nl.po: Correct obvious typo from the translator

Sun Oct 24 09:21:17 CEST 2004 Christian Perrier <bubulle@debian.org>

  * debian/changelog: Close *all* Portuguese translation bug reports

Sun Oct 24 12:58:36 BST 2004 Scott James Remnant <scott@netsplit.com>

  * po/POTFILES.in: Add lib/compression.c here.

Fri Jun 18 17:04:44 BST 2004 Scott James Remnant <scott@netsplit.com>

  * configure.in: Add checks for bz2 in a similar manner to zlib.
  * Makefile.conf.in: Add definitions for BZ2LIB macros.
  * lib/compression.c: New file taken from HEAD that implements
  compression and decompression for gzip, bzip2 and pass-through.
  * lib/Makefile.in: Compile the new source file.
  * include/dpkg.h.in: Add BZIP2 macro expanding to the name of the
  bzip2 tool.  Add compression_type enum and headers for functions in
  compression.c
  * dpkg-deb/Makefile.in: Also link static bzip2 libraries to static dpkg-deb.
  * dpkg-deb/build.c: Remove internalGzip() function, replace calling
  code with call to new compress_cat() function.  Choose the appropriate
  name for the data member based on compress_type.
  * dpkg-deb/extract.c: Remove gzip calling code, replace with call to
  new decompress_cat() function.  Add code to detect compression type
  of data member.
  * dpkg-deb/main.c: Add new -Z option to set compression type, set
  default to gzip.
  * dpkg-deb/dpkg-deb.h: Add extern definition of compress_type option,
  add macros to define the bzip2 and pass-through data member filenames.

Tue Oct 19 08:28:46 CEST 2004 Javier Fernández-Sanguino Peña <jfs@computer.org>

  * po/es.po: updated (complete)

Sun Oct 17 08:40:46 CEST 2004 Piarres Beobide Egana <pi@beobide.net>

  * po/eu.po: updated (complete)

Thu Oct 14 17:01:21 CEST 2004 Michael Piefel <piefel@debian.org>

  * po/de.po: updated (now complete)

Wed Oct 13 17:01:31 CEST 2004 George Papamichelakis <george@step.gr>

  * po/el.po: Updated

Wed Oct 13 08:45:54 CEST 2004 Peter Karlsson <peterk@debian.org>

  * man/sv/dpkg-split.8: Updated
  * man/sv/start-stop-daemon.8: Updated
  * man/sv/deb-control.5: Updated
  * man/sv/dpkg.8: Updated
  * man/sv/md5sum.1: Updated
  * man/sv/dpkg-deb.1: Updated
  * man/sv/dpkg-query.8: Updated
  * man/sv/dselect.8: Updated

Tue Oct 12 22:22:55 CEST 2004 Miroslav Kure <kurem@upcase.inf.upol.cz>

  * po/cs.po: Updated (now complete)

Tue Oct 12 22:22:55 CEST 2004 Peter Karlsson <peter@softwolves.pp.se>

  * po/sv.po: Updated (now complete)

Tue Oct 12 07:50:21 CEST 2004 Philippe Batailler <philippe.batailler@free.fr>

  * man/fr/cleanup-info.8: updated
  * man/fr/dpkg.8: updated
  * man/fr/dpkg-deb.1: updated
  * man/fr/dpkg-divert.8: updated
  * man/fr/dpkg-name.1: updated
  * man/fr/dpkg-query.8: updated
  * man/fr/dpkg-source.1: updated
  * man/fr/dpkg-split.8: updated
  * man/fr/dpkg-statoverride.8: updated
  * man/fr/install-info.8: updated
  * man/fr/start-stop-daemon.8: updated
  * man/fr/update-alternatives.8: updated

Mon Oct 11 18:11:54 CEST 2004 Robert Luberda <robert@debian.org>

  * po/pl.po: Updated

Mon Oct 11 18:11:54 CEST 2004 Lior Kaplan <webmaster@guides.co.il>

  * po/he.po: Added

Mon Oct 11 18:11:54 CEST 2004 Piarres Beobide Egana <pi@beobide.net>

  * po/eu.po: Added

Mon Oct 11 18:11:54 CEST 2004 Yongtao Yang <yongtao.yang@telia.com>

  * po/zh_CN.po: Added

Mon Oct 11 18:11:54 CEST 2004 Miguel Figueiredo <elmig@debianpt.org>

  * po/pt.po: Updated

Mon Oct 11 18:11:54 CEST 2004 Yuri Kozlov <yuray@id.ru>

  * po/ru.po: Updated

Mon Oct 11 18:11:54 CEST 2004 Kenshi Muto <kmuto@debian.org>

  * po/ja.po: Updated

Mon Oct 11 18:11:54 CEST 2004 Changwoo Ryu <cwryu@debian.org>

  * po/ko.po: Updated

Mon Oct 11 18:11:54 CEST 2004 Bart Cornelis <cobaco@linux.be>

  * po/nl.po: Updated

Mon Oct 11 18:11:54 CEST 2004 Havard Korsvoll <korsvoll@skulelinux.no>

  * po/nn.po: Updated

Mon Oct 11 18:11:54 CEST 2004 Miroslav Kure <kurem@upcase.inf.upol.cz>

  * po/cs.po: Updated

Mon Oct 11 18:11:54 CEST 2004 Andre Luis Lopes <andrelop@debian.org> 

  * po/pt_BR.po: Updated

Mon Oct 11 18:11:54 CEST 2004 Ruben Porras <nahoo82@telefonica.net>

  * man/es/md5sum.1: updated
  * man/es/start-stop-daemon.8: updated
  * man/es/dpkg-scansources.1: updated
  * man/es/dpkg-scanpackages.1: updated
  * man/es/update-alternatives.8: updated
  * man/es/dpkg-divert.8: updated
  * man/es/cleanup-info.8: updated
  * man/es/dpkg-checkbuilddeps.1: updated
  * man/es/dpkg-split.8: updated
  * man/es/dpkg-statoverride.8: updated
  * man/es/dpkg.8: updated
  * man/es/dselect.8: updated
  * man/es/dpkg-source.1: updated
  * man/es/dpkg-deb.1: updated
  * man/es/dpkg-name.1: updated

Mon Oct 11 18:11:54 CEST 2004 Christian Perrier <bubulle@debian.org>

  * configure.in: Added he to ALL_LINGUAS.
  * configure.in: Added eu to ALL_LINGUAS.
  * configure.in: Added zh_CN to ALL_LINGUAS.

Mon Oct 11 16:33:49 CEST 2004 George Papamichelakis <george@step.gr>

  * po/el.po: Added

Mon Oct 11 16:33:49 CEST 2004 Christian Perrier <bubulle@debian.org>

  * configure.in: Added el to ALL_LINGUAS.

Mon Jul 19 20:17:09 BST 2004 Scott James Remnant <scott@netsplit.com>

  * version-nr, debian/changelog: Bump version to 1.10.24.

Sat Jun 26 18:38:34 CEST 2004 David Weinehall <tao@debian.org>

  * scripts/dpkg-buildpackge.sh, scripts/dpkg-name.sh, methods/disk.update,
  methods/disk.setup: Change non-POSIX -a and -o test options to shell
  && and || for portability.

Sat Jun 26 16:41:31 CEST 2004 Changwoo Ryu <cwryu@debian.org>

  * po/ko.po: Updated.

Wed Jun 23 17:57:45 BST 2004 Changwoo Ryu <cwryu@debian.org>

  * po/ko.po: Added.
  * configure.in: Added ko to ALL_LINGUAS.

Tue Jun 22 17:50:57 BST 2004 Christian Perrier <bubulle@debian.org>

  * po/fr.po: Updated.

Tue Jun 22 17:48:22 BST 2004 Claus Hindsgaul <claus_h@image.dk>

  * po/da.po: Updated.

Sat Jun 19 23:11:38 BST 2004 Scott James Remnant <scott@netsplit.com>

  * dselect/Makefile.in: Remove helpmsgs.h from the GENFILES list so
  we don't wipe it on "make clean" (it's not generated anymore).

Fri Jun 18 11:49:21 BST 2004 Ognyan Kulev <ogi@fmi.uni-sofia.bg>

  * utils/start-stop-daemon.c: Moved pid_is_running inside OSHURD sentry,
  provided Hurd version.  Removed dependency on C99 code and replaced
  constructor with an init function.

Fri Jun 18 06:34:43 BST 2004 Scott James Remnant <scott@netsplit.com>

  * archtable: Requested the technical committee to make the mentioned
  decision -- we're going with amd64 (that'll please my boss :-)
  * scripts/dpkg-architecture.pl: Likewise.

Tue Jun 15 19:19:36 BST 2004 Bartosz Fenski aka fEnIo <fenio@o2.pl>

  * po/pl.po: Updated.

Mon Jun 14 09:35:30 BST 2004 Ruben Porras <nahoo82@telefonica.net>

  * man/es/dpkg-scanpackages.1, man/es/start-stop-daemon.8, 
  man/es/dpkg-scansources.1, man/es/dpkg.8, man/es/dpkg-checkbuilddeps.1, 
  man/es/dselect.8, man/es/dpkg-deb.1: Updated again from the BTS, for
  some reason the previous update lost the foreign characters.

Mon Jun 14 09:12:08 BST 2004 Scott James Remnant <scott@netsplit.com>

  * scripts/dpkg-divert.8: Correct typo (ibrary -> library).

Mon Jun 14 08:58:27 BST 2004 Lele Gaifax <lele@nautilus.homeip.net>

  * po/it.po: Updated.

Mon Jun 7 17:47:13 CEST 2004 Jordi Mallach <jordi@debian.org>

  * po/ca.po: Update Catalan translation.

Thu Jun 3 12:03:49 BRT 2004 Scott James Remnant <scott@netsplit.com>

  * archtable, scripts/dpkg-architecture.pl: Remove support for amd64/x86-64,
  the porters clearly can't make up their mind what they want.

Wed Jun 2 15:32:47 BRT 2004 Scott James Remnant <scott@netsplit.com>

  * version-nr, debian/changelog: Bump version to 1.10.23.

Tue Jun 1 17:42:58 BRT 2004 Scott James Remnant <scott@netsplit.com>

  * scripts/Makefile.in: Move dpkg-scanpackages and dpkg-scansources
  manpages to section 1.
  * scripts/dpkg-scanpackages.8: Renamed to dpkg-scanpackages.1, adjusted
  reference to dpkg-scansources.
  * scripts/dpkg-scansources.pl: Adjusted reference to dpkg-scanpackages.
  * dselect/dselect.8: Adjusted reference to dpkg-scanpackages.

  * man/es/Makefile.in: Move dpkg-scanpackages and dpkg-scansources
  manpages to section 1.
  * man/es/dpkg-scanpackages.8: Renamed to dpkg-scanpackages.1, adjusted
  reference to dpkg-scansources.
  * man/es/dpkg-scansources.8: Renamed to dpkg-scansources.1,

  * man/fr/Makefile.in: Move dpkg-scanpackages and dpkg-scansources
  manpages to section 1.
  * man/fr/dpkg-scanpackages.8: Renamed to dpkg-scanpackages.1, adjusted
  reference to dpkg-scansources.
  * man/fr/dpkg-scansources.8: Renamed to dpkg-scansources.1

  * man/ja/Makefile.in: Move dpkg-scanpackages and dpkg-scansources
  manpages to section 1.
  * man/ja/dpkg-scanpackages.8: Renamed to dpkg-scanpackages.1, adjusted
  refence to dpkg-scansources.
  * man/ja/dpkg-scansources.8: Renamed to dpkg-scansources.1, adjusted
  reference to dpkg-scanpackages.
  * man/ja/dselect.8: Adjusted references to dpkg-scanpackages.

  * man/pt_BR/dselect.8: Adjusted reference to dpkg-scanpackages.
  * man/sv/.check.pl: Adjusted reference to dpkg-scanpackages.
  * man/sv/dselect.8: Adjusted reference to dpkg-scanpackages.

Tue Jun 1 17:27:50 BRT 2004 Scott James Remnant <scott@netsplit.com>

  * scripts/dpkg-shlibdeps.pl: Guard chown call with a check that we're
  running as root, if we're not, it's not necessary.

Tue Jun 1 17:23:30 BRT 2004 Scott James Remnant <scott@netsplit.com>

  * script/dpkg-source.1: Documented dpkg:Version and dpkg:UpstreamVersion
  substvars.

Tue Jun 1 14:52:27 BRT 2004 KISE Hiroshi <kise@fuyuneko.jp>

  * man/ja/dpkg-checkbuilddeps.1: Updated.
  * man/ja/dpkg-divert.8: Updated.

Tue Jun 1 14:45:47 BRT 2004 Nikolai Prokoschenko <nikolai@prokoschenko.de>

  * po/ru.po: Updated.

Tue Jun 1 14:41:30 BRT 2004 Helge Kreutzmann <kreutzm@itp.uni-hannover.de>

  * man/de/start-stop-daemon.8: New translation.
  * man/de/Makefile.in: Added new manpage.

Tue Jun 1 14:37:52 BRT 2004 Ruben Porras <nahoo82@telefonica.net>

  * man/es/dpkg-divert.8: Updated.

Tue Jun 1 13:53:29 BRT 2004 Lele Gaifax <lele@nautilus.homeip.net>

  * po/it.po: Updated.

Mon May 31 20:44:21 BRT 2004 Scott James Remnant <scott@netsplit.com>

  * archtable: Change amd64 to x86-64 or x86_64 to match the GNU strings
  until someone better than me makes a real decision about this.
  * scripts/dpkg-architecture.pl: Likewise.

Mon May 31 12:48:35 BRT 2004 Michal Cihar <michal@cihar.com>

  * dpkg-deb/extract.c: Swap %zi and %ld in printf expression.
  * split/info.c: Correct %zi and %lu in printf expression.
  * split/main.c: Include missing sys/types.h and sys/stat.h headers.

Sun May 30 19:51:52 BRT 2004 Robert Millan <zeratul2@wanadoo.es>

  * archtable: Change i386-kfreebsd-gnu to kfreebsd-i386 and add
  i386-knetbsd-gnu.
  * scripts/dpkg-archtable.pl: Return i386-freebsd for freebsd-i386 and
  i386-kfreebsd-gnu for kfreebsd-i386 instead.  Add knetbsd-i386.
  * configure.in: Identify knetbsd-gnu.

Fri May 28 18:45:26 BRT 2004 Steinar H. Gunderson <sesse@dessverre.samfundet.no>

  * main/depcon.c: Colour packages as we check them for break cycles to
  reduce the amount of recursion required to break a cycle.
  * include/dpkg-deb.h, lib/database.c: Add colour to the package structure.
  * main/main.h, main/configure.c, main/remove.c: Remove second
  argument from findbreakcycle() function.

Wed May 26 23:05:01 BRT 2004 Ognyan Kulev <ogi@fmi.uni-sofia.bg>

  * utils/start-stop-daemon.c: On hurd, proc_stat_set_flags may return
  NULL as Hurd can have processes with no uid, replace ihash_iterate
  with HURD_IHASH_ITERATE.

Sat May 22 15:28:33 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * utils/md5sum.1: s/asterix/asterisk/.  Thanks to Matt Zimmermann for
  noticing this.

Wed May 12 23:25:16 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * main/packages.c: Apply patch from Daniel Kobras to disappear empty
  packages that are replaced in the same run.

Fri May 7 04:46:01 BST 2004 Scott James Remnant <scott@netsplit.com>

  * doc/Makefile.in: Ensure that $(docdir) exists before attempting
  to install the ChangeLog there.

Fri May 7 01:21:49 BST 2004 Scott James Remnant <scott@netsplit.com>

  * dselect/pkginfo.cc: Replace &c. with the slightly clearer etc.

  * main/dpkg.8: Update from sgml, document --force-bad-verify.
  * main/dpkg-query,8: Correct --list documentation, without pattern it
  searches status not available.
  * scripts/dpkg-divert.8: Remove obsolete reference to the Debian Packaging
  Manual.
  * scripts/dpkg-source.1: Rather than keeping dpkg-source(1) always up to
  date with the -i option, document the intent of the default.
  * scripts/dpkg-statoverride.8: Correct typo and documentation of --update.
  * scripts/update-alternatives.8: Correct documentation of --install
  and --remove actions.
  * man/en/dpkg.8.sgml: Add missing </para> from last commit.
  * utils/start-stop-daemon.c: Correct typo.
  * utils/start-stop-daemon.8: Correct --pidfile documentation and mention
  what happens if you don't supply it; document that it will chdir("/")
  unless -d is specified.

  * dpkg-deb/dpkg-deb.1, main/dpkg.8, main/dpkg-query.8, scripts/cleanup-info.8,
  scripts/dpkg-checkbuilddeps.1, scripts/dpkg-divert.8, scripts/dpkg-name.1,
  scripts/dpkg-scanpackages.8, scripts/dpkg-source.1,
  scripts/dpkg-statoverride.8, scripts/install-info.8,
  scripts/update-alternatives.8, split/dpkg-split.8, utils/md5sum.1,
  utils/start-stop-daemon.8: Correct manpage hyphenation for those in a
  UTF-8 locale.

Fri May 7 01:13:36 BST 2004 Scott James Remnant <scott@netsplit.com>

  * man/en/dpkg.8.sgml: Add a new Additional Functionality section at the
  bottom where we can refer readers to other packages that provide the
  functionality they may be looking for.  Suggest aptitude and debsums.

Fri May 7 00:55:39 BST 2004 Scott James Remnant <scott@netsplit.com>

  * man/en/dpkg.8.sgml: Document dselect update alongside --update-avail.

Fri May 7 00:47:39 BST 2004 Geoff Richards <qef@rosies-dumplings.co.uk>

  * scripts/dpkg-source.1: Suggest 'fakeroot' for the dpkg-source -r command.

Fri May 7 00:42:44 BST 2004 Scott James Remnant <scott@netsplit.com>

  * main/main.c: Suggest 'aptitude' as well as 'dselect' now that
  d-i installs it.

Fri May 7 00:39:01 BST 2004 Christian Perrier <bubulle@debian.org>

  * po/fr.po: Updated French translation.

Fri May 7 00:04:28 BST 2004 Scott James Remnant <scott@netsplit.com>

  * lib/parsehelp.c, scripts/dpkg-source.pl, scripts/cl-debian.pl: Remove
  restriction that package names be at least two characters long.

Thu May 6 23:57:52 BST 2004 Andrew Shugg <andrew@neep.com.au>

  * utils/md5sum.c: Add support for DOS line-endings (\r\n).

Thu May 6 23:52:28 BST 2004 Daniel Kobras <kobras@debian.org>

  * archtable: Add ia64-unknown-linux-gnu.

Thu May 6 23:50:17 BST 2004 Daniel Kobras <kobras@debian.org>

  * main/enquiry.c: Remove dereference of unitialised and unused pointer
  variable, fixing segfault on when "gcc -dumpmachine" returns a
  non-matching triplet.

Thu May 6 23:44:55 BST 2004 Colin Watson <cjwatson@debian.org>

  * dselect/helpmsgs.cc: Pressing 'n' repeats the last search, not
  moves down; pressing 'p' does nothing.

Thu May 6 23:39:59 BST 2004 Helge Kreutzmann <kreutzm@itp.uni-hannover.de>

  * man/de/Makefile.in: Install update-alternatives.8
  * man/de/update-alternatives.8: Translated into German.

Thu May 6 23:23:10 BST 2004 Scott James Remnant <scott@netsplit.com>

  * utils/md5sum.1, man/es/md5sum.1, man/de/md5sum.1, men/ja/md5sum.1:
  Correct "et al" to "et al."
  * main/main.c, man/en/dpkg.8.sgml: Correct description of
  --compare-versions command to describe versions as "empty" rather
  than "missing" or "no version" as "" has to be passed.
  * man/en/dpkg.8.sgml: Add dpkg-reconfigure(8) to SEE ALSO section.
  * utils/start-stop-daemon.8: Move documentation of --retry to the
  paragraph about --stop where it belongs.
  * scripts/update-alternatives.8: Remove strange &quot; usage and
  replace with appropriate .BR.

Sun May  2 10:22:25 CEST 2004 Tollef Fog Heen <tfheen@debian.org>

  * scripts/dpkg-scanpackages.pl: Give proper case for Origin and
    Bugs.

Sun May  2 10:04:25 CEST 2004 Tollef Fog Heen <tfheen@debian.org>

  * scripts/controllib.pl: Fix unknown() so it actually manages to pick
    out the correct field name.

Fri Apr 30 11:20:13 CEST 2004 Jordi Mallach <jordi@debian.org

  * po/ca.po: Update Catalan translation.

Tue Apr 27 21:49:25 BST 2004 Ruben Porras <nahoo82@telefonica.net>

  * man/es/dpkg-scansources.8: Added Spanish manpage.
  * man/es/Makefile.in: Install it.

Tue Apr 27 19:47:37 BST 2004 Scott James Remnant <scott@netsplit.com>

  * scripts/dpkg-architecture.pl (rewrite_gnu): Add a new regexp for
  parsing i386-gnu style triplets on the Hurd.

Tue Apr 27 19:23:01 BST 2004 Scott James Remnant <scott@netsplit.com>

  * main/dpkg.8: Correct reference to non-existent --force-reinstreq
  option to --force-remove-reinstreq.

Tue Apr 27 19:01:28 BST 2004 Ruben Porras <nahoo82@telefonica.net>

  * man/es/start-stop-daemon.8, man/es/dselect.8, man/es/dpkg.8,
  man/es/dpkg-checkbuilddeps.8, man/es/dpkg-deb.1,
  man/es/dpkg-scanpackages.8: Updated Spanish manpages.

Mon Apr 26 20:28:58 CEST 2004 Tollef Fog Heen <tfheen@debian.org>

  * scripts/dpkg-architecture.pl, archtable: Add AMD64/x86_64 support.
    Also reindent archtable so the columns line up nicely.

Mon Apr 26 18:53:15 BST 2004 Scott James Remnant <scott@netsplit.com>

  * configure.in: Put the man page directories in alphabetical order.
  * man/Makefile.in: Likewise
  * debian/rules: Extract manual page directories from Makefile.in and
  use that list instead of hardcoding them.

Sun Apr 25 19:00:20 BST 2004 Scott James Remnant <scott@netsplit.com>

  * version-nr, debian/changelog: Bump version to 1.10.22.

Sun Apr 25 18:02:34 BST 2004 Scott James Remnant <scott@netsplit.com>

  * scripts/install-info.pl: Add --dir-file option for compatibility
  with GNU install-info.  Correct code to break infinite loop.

Sun Apr 25 17:57:46 BST 2004 Scott James Remnant <scott@netsplit.com>

  * scripts/dpkg-divert.8: Document that diverting shared libraries
  can be troublesome when combined with ldconfig.

Sun Apr 25 17:53:06 BST 2004 Scott James Remnant <scott@netsplit.com>

  * scripts/dpkg-checkbuilddeps.1: This script no longer checks for
  build-essential, so don't document that it does.

Sun Apr 25 17:45:47 BST 2004 Scott James Remnant <scott@netsplit.com>

  * scripts/dpkg-genchanges.pl: Group the -o expression to find
  using braces.

Sun Apr 25 17:17:16 BST 2004 Scott James Remnant <scott@netsplit.com>

  * man/es/Makefile.in: Add new dpkg-source.1 manpage.

Sun Apr 25 17:08:57 BST 2004 Scott James Remnant <scott@netsplit.com>

  * man/ja/Makefile.in: Add new dpkg-source.1 manpage.

Sun Apr 25 16:59:09 BST 2004 Scott James Remnant <scott@netsplit.com>

  * configure.in: Add Norwegian Nynorsk and Portugese linguas.

Sun Apr 25 12:27:38 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * main/archive.c: make block and char devices work properly when
    extracting.  mknod can create other kinds of devices than just char
    and block devices, so we need to pass the type of device to mknod in
    the mode argument.

Sun Apr 25 00:46:38 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * split/mksplit.pl: cut off anything after the first piece of whitespace
    when getting the md5sum, since we now get a different-formatted md5sum
    back.  (It now has a trailing dash.)

Sun Apr 25 00:23:27 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * lib/dump.c: Terminate buffer in order to not display garbage when
    displaying dependency fields.
	
Sun Apr 25 00:12:27 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * main/query.c, dpkg-deb/main.c: Fix up the query format to be
    consistent with what the library expects.  Remove the pkg: prefix from
    the default showformat.
	
Sun Apr 25 00:06:27 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * scripts/dpkg-statoverride.pl: Make sure the permissions passed to
    dpkg-statoverride are numeric.

Sat Apr 24 23:11:12 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * include/dpkg.h.in, lib/ehandle.c, lib/myopt.c: Failed opening of
    configuration files are no longer a fatal error.  Thanks to Max
    Vozeler <max@hinterhof.net> for the patch.

Mon Apr 19 12:24:40 CEST 2004 Tollef Fog Heen <tfheen@debian.org>

  * scripts/dpkg-shlibdeps.pl: Set LC_ALL to C before spawning off dpkg
  --search, to avoid searching on localized strings.

Sun Mar 28 18:32:19 CEST 2004 Jordi Mallach <jordi@debian.org>

  * po/ca.po: Update Catalan translation.

Fri Mar 12 19:02:21 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * main/remove.c (removal_bulk_remove_configfiles): Don't change the
  "previous pointer" pointer if we remove the node from the linked list,
  ensuring that if the next node is to be removed the right thing will
  happen.

  This corrects the bug where every second shared or diverted conffile
  would be incorrectly deleted by dpkg.
 
Fri Mar 12 15:05:52 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * utils/start-stop-daemon.c: Don't require an argument for -V (version).

Thu Mar 11 11:36:06 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * version-nr, debian/changelog: Bump version to 1.10.21.

Thu Mar 11 11:23:09 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * man/ja/Makefile.in: Add new pages to Makefile.in so they get
  installed.

Thu Mar 11 11:18:29 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * scripts/dpkg-buildpackage.sh: Revert change suggested by Javier
  Fernandez-Sanguino Pena, and don't echo a blank line when dealing
  with PGP.  PGP itself will fail if we do this, it's needed to
  satisfy pgpgp, which quite frankly is a bug in pgpgp's emulation
  of pgp.
  
Thu Mar  8 01:10:00 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * po/pt_BR.po: Fix typo.

Thu Mar  8 01:10:00 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * man/de/md5sum.1: Fix spelling error as per patch in #230750

Thu Mar  8 01:00:00 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * man/fr/dpkg-source.1 man/fr/update-alternatives.8
  man/fr/start-stop-daemon.8 man/fr/dpkg.8 man/fr/dpkg-query.8
  man/fr/deb-control.5 man/fr/dpkg-scanpackages.8: Update French translation
  per patches in #218713 

Thu Mar  8 00:54:00 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * man/ja/{dpkg-architecture.1,dpkg-query.8,dselect.8}:  Update Japanese
    translation.  Closes: #224616

Thu Mar  8 00:38:00 CEST 2004  Tollef Fog Heen  <tfheen@debian.org>

  * release.sh: Remove .svn directories as well.

Mon Mar  8 19:37:00 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * version-nr, debian/changelog: Bump version to 1.10.20.

Mon Mar  8 19:02:25 GMT 2004 Andrew Suffield <asuffield@debian.org>

  * utils/md5sum.c: Check the bounds of the line before processing.

Mon Mar  8 18:55:13 GMT 2004 Brian M. Carlson <sandals@crustytoothpaste.ath.cx>

  * utils/md5sum.c: Don't print offending lines as they may not be NULL
  terminated.

Mon Mar  8 18:34:16 GMT 2004 Goswin Brederlow <brederlo@informatik.uni-tuebingen.de>

  * lib/parse.c, main/processarc.c: Store Architecture in the status file
  and don't remove it when processing.  This is a first step towards
  multi-arch support in a future release of Debian.

Mon Mar  8 18:28:07 GMT 2004 Robert Millan <rmh@debian.org>

  * archtable, configure.in, scripts/dpkg-architecture.pl: Update
  support for Debian FreeBSD.

Mon Mar  8 18:20:38 GMT 2004 Javier Fernandez-Sanguino Pena <jfs@computer.org>

  * scripts/dpkg-buildpackage.sh: Add blank line to .dsc before
  signing with PGP.

Mon Mar  8 18:10:06 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * debian/control: Remove duplicated uploaders field and add myself
  to the one that's left.

Mon Mar  8 16:49:13 GMT 2004 Christian Haggstrom <chm@c00.info>

  * lib/mlib.c: Remove extraneous %s in ohshite() call when out of
  disk space so that condition gets handled correctly and not with
  a SEGV.

Mon Mar  8 10:14:27 GMT 2004 Colin Watson <cjwatson@debian.org>
 
  * dselect/methlist.cc, dselect/pkgdisplay.cc: Set the total display width
  to the maximum of TOTAL_LIST_WIDTH and COLS, improving display on wide
  terminals.

Thu Mar  4 13:28:11 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * lib/tarfn.c: Copy the Name and LinkName elements and ensure they
  are NULL-terminated, freeing these copies before returning.  The
  tar spec doesn't require a NULL byte if the filename is exactly
  100 characters long.

Sun Feb 29 21:56:25 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * scripts/dpkg-checkbuilddeps.pl: Push build-conflicts errors into
  @conflicts instead of @unmet, this looks like an accidental error
  introduced by bad copy&pasteing.

Mon Mar  8 17:26:06 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * debian/changelog, version-nr: Bump to 1.10.19.

Thu Feb 26 01:48:15 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * main/processarc.c (process_archive): Copy code from main/remove.c
  to ensure that hardlinks to devices, setuid files or setgid files
  cannot be stashed away in the hope that they become compromisable
  in the future.  This was handled when removing a package, but not
  when upgrading one.

Thu Feb 26 01:23:13 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * version-nr: Bump to 1.10.18.1

Mon Feb 23 22:46:21 GMT 2004 Scott James Remnant <scott@netsplit.com>

  * dpkg-deb/main.c: Clean up previous badly applied multiline string
    patch.

Mon Feb 23 01:30:13 CET 2004 Steinar H. Gunderson <sesse@debian.org>

  * main/remove.c: Terminate string buffer correctly.

Fri Feb 20 10:22:24 CET 2004 Colin Watson <cjwatson@debian.org>

  * dpkg-deb/main.c: Don't use multiline strings (a removed GCC extension).

Tue Jan 27 20:08:12 CST 2003 Adam Heath <doogie@debian.org>

  * debian/control: Update dpkg conflicts to << 1.10, instead of 1.9.

Mon Oct 27 13:39:56 CST 2003 Adam Heath <doogie@debian.org>

  * version-nr, debian/changelog: Rebuild, tagging and releasing correctly
    from cvs this time.

Mon Oct 27 13:01:12 CST 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-gencontrol.pl: Fix errors with dependency fields that
    reference ${dpkg:Version}.

Mon Oct 27 18:45:19 CET 2003 Jordi Mallach <jordi@debian.org>

  * po/ca.po: Update Catalan translation and recode to UTF-8.

Mon Oct 27 11:06:25 CST 2003 Adam Heath <doogie@debian.org>

  * debian/dpkg.postinst: Don't assume /usr/info/dir exists if /usr/info
    does.

Mon Oct 27 10:57:54 CST 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.pl: Add .#* to the default ignore filter.

Mon Oct 27 09:49:29 CST 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-scanpackages.pl: Add -u -a<arch> commands.

Mon Oct 27 09:42:57 CST 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-checkbuilddeps.pl: Set $reduce_arch when calling parsedep.

Sun Oct 26 19:29:16 CST 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-checkbuilddeps.pl: s/dpkg-checkbuild/dpkg-checkbuilddeps/
    in usage.
  * version-nr: Bump to 1.10.17.
  * debian/changelog: Make the date UNRELEASED.

Sun Oct 26 14:55:53 CET 2003 Wichert Akkerman <wichert@wiggy.net>

  * dselect/pkgdepcon.cc: change return value for pkgdepcon() to indicate
    a conflict resolution is needed when dealing with autoselected
    recommends

Sat Oct 25 15:46:16 CDT 2003 Adam Heath <doogie@debian.org>

  * debian/changelog: Tag for 1.10.16 release date(for real this time).

Sat Oct 25 15:45:48 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/install-info.pl: Change formatting of info.dir.

Sat Oct 25 15:04:41 CDT 2003 Adam Heath <doogie@debian.org>

  * lib/mlib.c, include/dpkg.h.in, utils/md5sum.c: Change limit and the
    return value for buffer_copy to off_t, which fixes large file handling.

Sat Oct 25 15:02:27 CDT 2003 Adam Heath <doogie@debian.org>

  * almost all .c files: Almost *EVERY* damn file was including config.h in
    the wrong spot.  After making it the first include, then
    off_t/size_t/etc could actually be redefined to be 64-bit compatible.

Sat Oct 25 12:47:22 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-checkbuilddeps.pl: Fix dpkg-checkbuilddeps calling of
    parsedep.  It wasn't setting use_arch.

Tue Sep 23 12:20:35 CDT 2003 Adam Heath <doogie@debian.org>

  * configure.in: Add man/es/Makefile.
  
Tue Sep 23 12:12:38 CDT 2003 Adam Heath <doogie@debian.org>

  * debian/changelog: Set release date for 1.10.16.

Sat Sep 20 21:17:45 CDT 2003 Adam Heath <doogie@debian.org>

  * utils/md5sum.c: Fix handling of large files.

Sat Sep 20 20:42:35 CDT 2003 Adam Heath <doogie@debian.org>

  * man/*
    * Imported several translated manpages, from debian-doc cvs:
     * Spanish: 822-date.1 cleanup-info.8 deb-control.5 deb-old.5
       deb.5 dpkg-checkbuilddeps.1 dpkg-deb.1 dpkg-divert.8 dpkg-name.1
       dpkg-scanpackages.8 dpkg-split.8 dpkg-statoverride.8 dpkg.8
       dselect.8 md5sum.1 start-stop-daemon.8 update-alternatives.8
     * French: deb.5
     * Portuguese: dpkg.8 dselect.8
  * main/dpkg.8: -O had an inverted word.
  * po/cz.po: Improve translation of: "dpkg - warning: ignoring request to
    remove %s which isn't installed."
  * po/it.po: Fix missing space in translation when listing files, and the
    file is diverted.
  * po/pl.po:
    * Updated.
    * Fix translation of 'conflicts with'
  * po/ja.po: Fix typo in translation of dpkg --force-help; dowgrade ->
    downgrade
  * po/fr.po:
    * Fix translation when listing files, and the file is diverted.
    * Fix missing space in translation of: "%s - warning: downgrading %.250s
      from %.250s to %.250s.\n"
  * po/da.po: Fix translation of(was missing the leading space): " does not
    appear to be available\n"

Sat Sep 20 18:45:11 CDT 2003 Adam Heath <doogie@debian.org>

  * utils/start-stop-daemon.[c8]:
    * Add a -d|--chdir option to start-stop-daemon.
    * Split the background block into 2 parts: one that does the fork, and
      opens /dev/tty and /dev/null, and one that does everything else.  The
      second block is then moved to be run right before the exec.  This
      allows error messages to be seen from the child(previously, they were
      lost), and allows for the chroot to not require the device files.
    * When --start, --startas and --pidfile are given, print 'process'
      instead of '(null)' for the process name, if it's already running.

Sat Sep 20 17:44:40 CDT 2003 Adam Heath <doogie@debian.org>

  * configure.in, include/dpkg.h.in: Fix (non-)detection of setlocale.

Fri Sep 19 20:02:19 CDT 2003 Adam Heath <doogie@debian.org>

  * debian/changelog: Set date/time for 1.10.15 release.
 
Fri Sep 19 19:56:48 CDT 2003 Adam Heath <doogie@debian.org>

  * lib/varbuf.c, configure.in: Fix va_copy detection.
  * scripts/dpkg-buildpackage.sh: Back out debian/rules build-arch
    detection.  It is *not* possible *at all* to detect available targets
    in a rules file.  Period.

Fri Sep 19 12:26:54 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/{controllib,dpkg-{source,checkbuilddeps,control}}.pl:
    * Rewrote the parsedep stuff, so that it wasn't done during control 
      file parsing.  Scripts that need the internal parsed format should 
      call parsedep on the field's value.
    * Split the substvars parsing into a separate function.
    * No longer validate dependency fields when reading the control file.
      Some fields may have vars in them, which breaks the validation.
    * dpkg-gencontrol calls substvars after parsing the control file, and
      then validates the substituted depends lines.  Originally,
      substitution occurred only during writing of the final output file.
    * Andreas Barth <aba@not.so.argh.org>:
      Fix bad regex that didn't allow spaces in dependency field parsing.
      It now directly matches what the c code expects.  It previously was
      allowing all of \S, which matched on '('.
      Closes: #211660.
  * debian/control: Remove stale debug that would have broken installation
    on s390.
  * debian/rules: We were calling our own local copy of dpkg-gencontrol,
    but the system-installed copy of dpkg-shlibdeps.  Now, both are called
    from the build directory.

Wed Sep 17 13:26:14 CDT 2003 Adam Heath <doogie@debian.org>

  * debian/changelog, version-nr: Updated to 1.10.13.

Wed Sep 17 13:23:15 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/controllib.pl: Fix parsing of deps when both () and [] are
    specified.
  * scripts/controllib.pl: Set $host_arch in controllib.pl:parsedep.
  * scripts/dpkg-checkbuilddeps.pl: Don't output the [] stuff when finding
    invalid deps.

Tue Sep 16 13:44:06 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.pl: Fix generation of dependency lines.

Tue Sep 16 13:06:01 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-genchanges.pl: Ignore 'o:.*' in %fi.

Tue Sep 16 13:02:10 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.pl: Ignore 'o:.*' in %fi.

Tue Sep 16 12:57:02 CDT 2003 Adam Heath <doogie@debian.org>

  * po/update.sh: Remove helpmsgs.cc generation.

Tue Sep 16 12:52:42 CDT 2003 Adam Heath <doogie@debian.org>

  * version-nr, debian/changelog: Updated for 1.10.11 release.

Tue Sep 16 12:50:44 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/update-alternatives.pl: Remove -w, as it causes runtime
    warnings.  The code isn't clean enough yet to support it.

Mon Sep 15 19:08:28 CDT 2003 Adam Heath <doogie@debian.org>

  * debian/rules: No longer generate any BYHAND files.  Also, fix bug in
    pseudo-tags installation.

Mon Sep 15 18:53:06 CDT 2003 Adam Heath <doogie@debian.org>

  * debian/rules, debian/pseudo-tags: Install
    /usr/share/doc/dpkg/pseudo-tags, which talks about the bug titling we
    use to mark bugs for filtering in the Debian bts.

Mon Sep 15 18:48:39 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-buildpackage.sh: Call debian/rules -qn build-arch, and if
    it's available, modify -B handling appropriately.  If build-arch is not
    available, then when -B was called, do *not* pass -B on to
    dpkg-checkbuilddeps.

Sun Sep 14 21:45:44 CDT 2003 Adam Heath <doogie@debian.org>

  * configure.in: Fix broken os_type detection on linux.

Sun Sep 14 21:44:01 CDT 2003 Adam Heath <doogie@debian.org>

  * po/ca.po: Updated.

Sun, 14 Sep 2003 21:16:18 -0500 Adam Heath <doogie@debian.org>

  * scripts/controllib.pl, scripts/dpkg-checkbuilddeps.pl: Moved dependency
    parsing logic from dpkg-checkbuilddeps.  The dpkg-checkbuilddeps parser
    didn't support empty fields, while the controllib parser did.
  * scripts/controllib.pl:
    * Dependency fields are now parsed into a nested list structure.
    * All dependency fields now support [arch] constructs.  Those that
      don't apply for the current host_arch are removed during parsing.
    * Comment lines(those that start with '#') are ignored during parsing.
    * Store the original field's casing with 'o:' prepended in %fi.
  * scripts/dpkg-checkbuilddeps.pl:  Because of the above controllib.pl
    changes, this script is much simpler now.
  * scripts/dpkg-gencontrol.pl:     
    * Use the original casing of field names when reporting unknown fields.
  * scripts/dpkg-gencontrol.pl, scripts/controllib.pl: After opening files,
    set binmode.

Sun Sep 14 17:24:20 CDT 2003 Adam Heath <doogie@debian.org>

  * dselect/{Makefile.in,helpmsgs.{cc,h,src},mkhelpmsgs.pl,.cvsignore}:
    No longer generate helpmsgs.{cc,h}.

Sun Sep 14 16:53:09 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/update-alternatives.{pl,8}:
    * Apply patch that provides --set and --remove-all commands.
    * --all calls --config on all alternatives.
  * scripts/update-alternatives.pl:
    * Alter --config prompt, to be more clear, that one must 'press' enter
      to accept the default.
    * Fix some -w issues.
    * Check whether the target path exists when removing.

Sat Sep 13 20:48:02 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/update-alternatives.8: Add --config to action section, and add
    as EXAMPLES section.
  * scripts/install-info.pl: install-info --version and --help now display
    on stdout.
  * main/dpkg{,-query}.8: Mention what -S will not find.
  * main/dpkg.8: Mention that downgrading a package can have serious
    consequences.
  * scripts/dpkg-scanpackages.8: Include small note that other tools might
    use the generated Packages file.
  * scripts/dpkg-source.1: Fix some typos.
  * dselect/dselect.8: dselect is not the only interface for installing
    packages nowadays.
  * utils/start-stop-daemon.8: Note that --nicelevel takes an argument.
  * man/en/deb-control.8: Remove duplicate 'can'.
  * scripts/dpkg-scansources.pl: Fix short description.
  * main/dpkg.8: Move dpkg-query options to their own subsection, like
    dpkg-deb.
  * main/main.c, main/dpkg.8: Add --dry-run and --simulate as synonyms to
    --no-act.
  * scripts/dpkg-architecture.pl: Fix wrong reference to
    DEB_BUILD_GNU_SYSTEM on --host
  * man/en/deb-control.5: s/Usuaully/Usually/
  * dselect/dselect.8: Removed reference in dselect(8) about recommends not
    being handled well.
  * scripts/dpkg-parsechangelog.pl: s/dpkg-source/dpkg-parsechangelog/ in
    -h
  * scripts/dpkg-source.1: Unhighlight "May be repeated multiple times."
  * dpkg-deb/main.c: Make all actions in -h lower case.
  * utils/start-stop-daemon.[c8]: Add -g|--group.
  * main/dpkg.8: s/THANKS/THANKS.gz/
  * main/dpkg.8: Mention running dselect, install after --set-selections.
  * main/main.c: Remove disabled --command-fd from help.

Sat Sep 13 18:42:27 CDT 2003 Adam Heath <doogie@debian.org>

  * Makefile.conf.in, archtable, configure.in, dselect/Makefile.in,
    lib/varbuf.c, scripts/dpkg-{architecture,shlibdeps}.pl,
    utils/start-stop-daemon.c: Support OpenBSD.

Sat Sep 13 18:39:41 CDT 2003 Adam Heath <doogie@debian.org>

  * archtable: Added alphaev68-linux-gnu to archtable.

Sat Sep 13 17:18:46 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.pl: Add .svn, {arch}, and .arch-ids to dpkg-source
    -i default regex.

Sat Sep 13 16:34:53 CDT 2003 Adam Heath <doogie@debian.org>

  * lib/parse.c: Change use of strncpy in parsedb to memcpy.

Sat Sep 13 16:28:52 CDT 2003 Adam Heath <doogie@debian.org>

  * main/main.c: Fix segfault with --status-fd.

Sat Sep 13 16:26:36 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.pl: Add .cvsignore to dpkg-source's default diff
    ignore regex.  Also fix missing \ escape for .deps.

Sat Sep 13 16:16:52 CDT 2003 Adam Heath <doogie@debian.org>

  * main/remove.c: Retry removing empty dirs during purge.

Sat Sep 13 16:09:13 CDT 2003 Adam Heath <doogie@debian.org>

  * main/filesdb.c: Increase filesdb bin size, and alter hashing function.

Sat Sep 13 16:04:37 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-statoverride.pl: Fix "stripping trailing /" message from
    dpkg-statoverride.

Sat Sep 13 15:56:13 CDT 2003 Adam Heath <doogie@debian.org>

  * automake/tools.m4, dselect/Makefile.in, methods/disk.setup,
    scripts/dpkg-parsechangelog.pl, scripts/dpkg-source.pl: Apply patch to
    make dpkg work with POSIX 1003.1-2001.

Sat Sep 13 15:40:39 CDT 2003 Adam Heath <doogie@debian.org>

  * lib/database.c: Apply patch to change hashing function, and increase
    bin size, for the package database.

Sat Sep 13 15:20:56 CDT 2003 Adam Heath <doogie@debian.org>

  * lib/enquiry.c, scripts/dpkg-architecture.pl: dpkg --print-architecture
    now does gcc -dumpmachine instead of --print-libgcc-file-name.

Sat Sep 13 14:38:55 CDT 2003 Adam Heath <doogie@debian.org>

  * debian/dpkg-doc.postinst: Add set -e.

Sat Sep 13 14:36:37 CDT 2003 Adam Heath <doogie@debian.org>

  * lib/parse.c: Fix inverted test of eof in parsedb, while looking for eof
    after field name.

Sat Sep 13 14:34:10 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/update-alternatives.pl: Fix inversion test of $state against
    'expected' when removing an alternative.

Sat Sep 13 14:31:22 CDT 2003 Adam Heath <doogie@debian.org>

  * lib/startup.c, lib/Makefile.in, include/dpkg.h.in: Change
    standard_startup and standard_shutdown into macros.

Sat Sep 13 14:24:14 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/install-info.pl: Apply patch, to handle missing infodir.bak,
    and empty files.

Sat Sep 13 14:21:13 CDT 2003 Adam Heath <doogie@debian.org>

  * config.sub, config.guess: Updated

Sat Sep 13 14:20:12 CDT 2003 Adam Heath <doogie@debian.org>

  * debian/control: Add build-depends on sgml-base, and increase
    gettext build-depends to 0.12.1-3.

Sat Sep 13 14:18:02 CDT 2003 Adam Heath <doogie@debian.org>

  * configure.in:
    * Change AC_SYS_SIGLIST_DECLARED to AC_DECL_SYS_SIGLIST.
    * Add locale.h to list of checked headers.
    * Pass external to AM_GNU_GETTEXT

Sat Sep 13 13:57:22 CDT 2003 Adam Heath <doogie@debian.org>

  * Makefile.conf.in: s/top_srcdir/abs_top_srcdir/

Sat Sep 13 13:56:23 CDT 2003 Adam Heath <doogie@debian.org>

  * lib/compat.c: s/SYS_SIGLIST_DECLARED/HAVE_DECL_SYS_SIGLIST/

Sat Sep 13 13:55:25 CDT 2003 Adam Heath <doogie@debian.org>

  * po/Makevars: Define MSGID_BUGS_ADDRESS

Fri, 12 Sep 2003 17:15:33 +0200 Wichert Akkerman <wichert@deephackmode.org>

  * srcipts/dpkg-source.pl: allow ~ in version numbers

Sat Apr 26 15:10:24 CDT 2003 Adam Heath <doogie@debian.org>

  * version-nr, debian/changelog: Updated for 1.10.10 release.

Sat Apr 26 15:09:10 CDT 2003 Adam Heath <doogie@debian.org>

  * debian/control: Updated to standards-version 3.5.8.
  * debian/{dpkg,{-dev,-doc},dselect}.{prerm,postinst}, debian/rules: No
    longer manage /usr/doc symlinks.

Sat Apr 26 14:28:17 CDT 2003 Adam Heath <doogie@debian.org>

  * .cvsignore, po/.cvsignore: Added generated/symlinked files.

Sat Apr 26 14:24:05 CDT 2003 Adam Heath <doogie@debian.org>

  * mkinstalldirs: removed, as this is generated.

Sat Apr 26 14:22:16 CDT 2003 Adam Heath <doogie@debian.org>

  * po/Makevars: Needed to work with the newer gettext.

Sat Apr 26 11:29:30 CDT 2003 Adam Heath <doogie@debian.org>

  * configure.in, Makefile.in: Updated for gettext 0.11.5.
  * po/*: Updated.

Tue Apr 15 11:32:22 CDT 2003 Adam Heath <doogie@debian.org>

  * archtable, utils/start-stop-daemon.c,  scripts/dpkg-architecture.pl:
    Add netbsd support.
  * scripts/dpkg-architecture.pl: Support hypenated values.

Tue Apr 15 01:05:04 CDT 2003 Adam Heath <doogie@debian.org>

  * config.sub, config.guess: Updated.

Tue Apr 15 00:48:06 CDT 2003 Adam Heath <doogie@debian.org>

  * debian/control, debian/rules, debian/changelog: Modified to use
    autotools-dev.

Tue Apr 15 00:35:40 CDT 2003 Adam Heath <doogie@debian.org>

  * scripts/dpkg-statoverride.pl: Strip trailing / from the file args in
    dpkg-statoverride.

Tue Apr 15 00:26:06 CDT 2003 Adam Heath <doogie@debian.org>

  * Makefile.in: Surround sed call with ''.

Tue Apr 15 00:16:44 CDT 2003 Adam Heath <doogie@debian.org>

  * debian/control: Make the dpkg-iasearch conflicts versioned.

Mon Apr 14 21:13:04 CDT 2003 Adam Heath <doogie@debian.org>

  * archtable: Updated for hurd.

Sun Sep 15 13:25:29 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-architecture.pl: Add s390x.

Sun Sep 15 13:21:38 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/changelog: Set date for 1.10.9 release.

Sun Sep 15 13:19:40 CDT 2002 Adam Heath <doogie@debian.org>

  * archtable: Add s390x.

Sun Sep 15 12:48:36 CDT 2002 Adam Heath <doogie@debian.org>

  * main/help.c: Fix dereference in cu_closefd(), which was the cause of
    close(random number) on most arches, but close(0) on s390x.

Sun Sep 15 12:43:00 CDT 2002 Adam Heath <doogie@debian.org>

  * version-nr, debian/changelog: Set 1.10.9 version.

Thu Sep  5 16:32:01 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/changelog: Set date for 1.10.8 release.

Thu Sep  5 16:31:11 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/install-info.pl: Make the multiline regex have an upper bound,
    instead of being unbounded, as newer perls have a larger stack frame,
    which cause them to segfault quicker with larger inputs.

Thu Sep  5 16:29:39 CDT 2002 Adam Heath <doogie@debian.org>

  * version-nr, debian/changelog: Set 1.10.8 version.

Tue Sep  3 18:59:19 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/changelog: Set date for 1.10.7 release.

Tue Sep  3 18:40:08 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/dbmodify.c: Fix double free in modstatdb_init, in the case that
    modstatdb_shutdown was called previously.

Tue Sep  3 18:37:45 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/nfmalloc.c: Protect duplicate calls to obstack_free(),
    as obstack_free segfaults when called without initializing.

Tue Sep  3 18:36:42 CDT 2002 Adam Heath <doogie@debian.org>

  * version-nr, debian/changelog: Set 1.10.7 version.

Sun Sep  1 23:46:04 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/changelog: Set date for 1.10.6 release.

Sat Aug 31 23:46:04 CDT 2002 Adam Heath <doogie@debian.org>

  * dpkg-deb/main.c, dselect/main.cc, include/dpkg.h.in, lib/startup.c
    main/main.c, main/query.c, split/main.c:  Don't call nffreeall, in any
    of the c/c++ programs.  It appears dselect slightly corrupts it's
    memory enough that it can't be freed without segfaulting.

Sat Aug 31 23:42:08 CDT 2002 Adam Heath <doogie@debian.org>

  * version-nr, debian/changelog: Modified for version 1.10.6.

Thu Aug 29 16:43:45 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/changelog: Set date for release.

Thu Aug 29 16:38:15 CDT 2002 Adam Heath <doogie@debian.org>

  * main/filesdb.c: Back out one memleak fix.

Thu Aug 29 15:13:59 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/rules: Remove /usr/sbin/start-stop-daemon.

Thu Aug 29 14:51:35 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/dbmodify.c, lib/dump.c, lib/lock.c, lib/startup.c, lib/tarfn.c
    main/configure.c, main/filesdb.c, main/query.c: Fix several minor
    memleaks.

Thu Aug 29 14:42:05 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/parsehelp.c: Fix corruption of available file, caused by use of
    memory that was previously freed.

Thu Aug 29 14:31:22 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/parse.c: Check for eof before we getc(), not after.

Sat Aug 24 15:36:41 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/install-info.pl: Previous install-infos(before 1.10) handled
    multiple dir file entries, because they would copy the entire stanza
    unmodified.  The newest version does not do this, as it reformats the
    options, and thereby only takes the first line.  So, we now split all
    the lines from the stanza, and process them all.

Sat Aug 24 14:47:56 CDT 2002 Adam Heath <doogie@debian.org>

  * archtable: Add i386-gnu0.3.
  * main/Makefile.in, utils/Makefile.in: Fix handling of static compiles,
    with regard to zlib.

Sat Aug 24 14:41:45 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/fields.c: Allow spaces between the end of a version, and the
    trailing ')'.

Sat Aug 24 14:16:13 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/archives.c: Fix segfault when --auto-deconfigure is given.  This is
    causes because the deconfigure list is allocated in an obstack, but
    then freed with normal free().

Thu Aug 22 23:37:45 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/database.c, lib/parse.c, lib/parsehelp.c, main/main.c: Fix several
    read pass buffer bugs, and a memleak.

Thu Aug 22 23:25:23 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/nfmalloc.c: Fix read past buffer in lib/nfmalloc.c.

Thu Aug 22 23:16:02 CDT 2002 Adam Heath <doogie@debian.org>

  * utils/md5sum.c: Handle directories better in md5sum.

Thu Aug 22 23:06:39 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-scanpackages.pl: Fix extraction of md5sum in
    dpkg-scanpackages.

Thu Aug 22 23:01:53 CDT 2002 Adam Heath <doogie@debian.org>

  * utils/md5sum.c: Fix segfault in md5sum if the file being checked
    doesn't exist.

Thu Aug 22 22:59:54 CDT 2002 Adam Heath <doogie@debian.org>
 
  * version-nr, debian/changelog: Modified for 1.10.5.

Sun Jul 14 15:10:22 CDT 2002 Adam Heath <doogie@debian.org>

  * configure.in: Remove -ffunction-sections and -fdata-sections.
  * Makefile.conf.in, Makefile.in, debian/rules:  Install archtable into
    /usr/share/dpkg/.

Sun Jul 14 15:09:24 CDT 2002 Adam Heath <doogie@debian.org>

  * version-nr, debian/changelog: Updated for 1.10.4 version.

Thu Jul 11 23:33:13 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/control: dselect replaces dpkg << 1.10.3, as we moved the
    dselect config file and manpages from dpkg.deb to dselect.deb.

Thu Jul 11 22:26:30 CDT 2002 Adam Heath <doogie@debian.org>

  * utils/start-stop-daemon.c: If in --test mode, and --stop is given,
    increment n_killed, so that start-stop-daemon returns the proper exit
    value.  Thanks Thomas Morin <thomas.morin@enst-bretagne.fr>.

Thu Jul 11 22:19:12 CDT 2002 Adam Heath <doogie@debian.org>

  * utils/start-stop-daemon.c: Fix test inversion in start-stop-daemon,
    when checking the pid given in a pid file.  Thanks Thomas Morin
    <thomas.morin@enst-bretagne.fr>.

Sun Jul  7 14:54:44 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/rules: Fix install location of /usr/lib/dpkg/methods.

Sat Jul  6 23:51:03 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * debian/rules: Move dselect.cfg to dselect package.

Thu Jul  4 21:31:57 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/rules: Install debian/dselect.conffiles.

Thu Jul  4 19:33:20 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.pl: Remove -Z from patch call, as it makes patch
    warn about missing timestamps.

Tue Jul  2 12:11:59 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/changelog, debian/control: dpkg + dpkg-static conflict dpkg-dev
    << 1.9, as dpkg-source 1.9 doesn't work with md5sum 1.10.

Tue Jul  2 12:29:52 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * Merge from HEAD:
    + lib/myopt: check for malloc failure and actually look in $HOME for
      file instead of looking in confdir twice

Tue Jul  2 10:20:40 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * debian/rules: cp instead of mv since we need files for both dpkg
    and dpkg-static (ugh)

Tue Jul  2 10:08:18 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * debian/rules: Remove autom4te.cache in clean target

Tue Jul  2 09:52:41 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * debian/rules: move dpkg.cfg.5 and dselect.cfg.5 into dpkg package

Tue Jul  2 09:46:01 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * Merge from HEAD:
    + scripts/dpkg-genchanges.pl: Add ~ to the list of legal characters
      in a package filename
    + scripts/dpkg-checkbuilddeps.pl: remove forced check for build-essential,
      we should not hardcode Debian policy into dpkg

Tue Jul  2 09:41:44 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * debian/control: sync dpkg and dpkg-static dependencies, fix double
    conflict for dpkg

Tue Jul  2 01:04:29 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/rules: Don't always call autoheader during build.

Mon Jul  1 14:45:11 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * debian/control: add conflict with dpkg-iasearch which intruded on
    our namespace and replace manpages-de which includes one of our manpages

Fri Jun 21 21:53:24 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * debian/dpkg.postinst: Merge patch from Josip Rodin to improve
    the move from /usr/info to /usr/share/info

Fri Jun 21 21:11:02 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * po/ca.po: Updated

Fri Jun 21 19:09:38 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * scripts/dpkg-genchanges.pl: Handle substvars in the Binary field

Thu Jun 20 00:54:54 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/install-info.pl: Fix broken merge from 1.9 branch.

Sat Jun  1 23:22:19 CDT 2002 Adam Heath <doogie@debian.org>

  * dpkg-deb/main.c, main/main.c, main/query.c, dselect/main.cc,
    split/main.c: Revert last modification.  It'll be fixed properly for
    dpkg 1.11.

Sat Jun  1 16:45:13 CDT 2002 Adam Heath <doogie@debian.org>

  * dpkg-deb/main.c, main/main.c, main/query.c, dselect/main.cc,
    split/main.c: Fixed printversion(), to allow translations to be done
    better.

Sat Jun  1 16:17:59 CDT 2002 Adam Heath <doogie@debian.org>

  * po/pt_BR.po: Updated.

Sat Jun  1 22:04:02 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * po/ru.po: Updated

Fri May 31 21:46:03 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * man/fr/dpkg-scanpackages.8, man/fr/dpkg-source.1, man/fr/dpkg.8,
    man/fr/start-stop-daemon.8, man/fr/deb-control.5: Updated

Mon May 27 21:13:00 CDT 2002 Adam Heath <doogie@debian.org>

  * po/de.po, po/fr.po, po/gl.po: Updated.

Sun May 26 18:50:10 CET 2002 Peter Karlsson <peterk@debian.org>

  * man/sv/dpkg.8, man/sv/start-stop-daemon.8, po/sv.po: Updated Swedish
    translation.

Sun May 26 01:35:34 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/tarfn.c: dpkg now reorders symlinks when extracting debs.  However,
    this is also still done when building debs.  After a stable release of
    Debian has occurred with this modified dpkg, the reordering when
    building can be removed.

Sun May 26 01:28:00 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/dpkg.postinst: Fix /usr/info/dir moving/symlink code.

Sun May 26 01:10:24 CDT 2002 Adam Heath <doogie@debian.org>

  * Fix some mis-merging of the 1.9 branch:
    * debian/rules, debian/dpkg.conffiles: dselect was split to a separate
      deb, no longer install dselect.cfg into dpkg.deb.  Also, dpkg.cfg is
      no longer a conffile.
    
Sat May 25 22:45:06 CDT 2002 Adam Heath <doogie@debian.org>

  * Merge changes from 1.9.20 and 1.9.21.
    * utils/start-stop-daemon.8: Fix some nroff formatting errors
    ? po.ru.po: Fix mistranslation
    * main/dpkg.8: document --force-confmiss, improve description for
      --force-conf{old,new}
    * lib/mlib.c: Detect truncated debs, and abort the unpack.
    * debian/rules: install dpkg.cfg in docdir, install dpkg.postrm.  Also
      install dselect.cfg in /etc/dpkg.
    * debian/dpkg.cfg: add force-overwrite
    * debian/dpkg.postrm: new file
    ? po/sv.po: Removed fuzzy translation.
    ? po/sv.po: Fixed broken c-format escapes which would make some error
      messages display incorrectly.
    * debian/control: Fix build-depends on zlib1g-dev to >= 1:1.1.3-19.1.
    * debian/changelog: The missing 1.9 entries.

Fri May 24 22:38:01 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-scanpackages.8: Add dpkg-scansources to
    dpkg-scanpackages(8).

Fri May 24 22:14:04 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.1: Fix typo in dpkg-source(1), s/-su/-sU/.

Fri May 24 22:11:53 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.1: Fix documentation of -v<version> for
    dpkg-parsechangelog, removing the requirement that the version has to
    be in the changelog.

Fri May 24 22:06:48 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-gencontrol.pl: Close the old debian/files file,
    before doing a rename.

Fri May 24 22:00:01 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-buildpackage.sh, scripts/dpkg-source.pl,
    scripts/dpkg-source.1: Add -I<filename> to dpkg-buildpackage and
    dpkg-source, to excludes files from tar, when building a native
    package.

Fri May 24 21:49:52 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/controllib.pl: Properly count recursive expansion of variables,
    instead of just counting all variable expansions.

Fri May 24 21:20:04 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/cl-debian.pl: Recognize emergency as valid in changelogs.

Fri May 24 21:12:36 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-architecture.pl: s/build on/built on/; same for
    'build for'.

Fri May 24 21:03:43 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-scanpackages.pl: Give proper case for Source and
    Installed-Size.

Fri May 24 01:10:45 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.pl, debian/changelog: Match fields case
    insensitively in debian/control.

Fri May 24 00:22:39 CDT 2002 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.pl: Clean up after ctrl-c is received.

Fri May 24 00:11:01 CDT 2002 Adam Heath <doogie@debian.org>

  * include/dpkg.h.in, include/myopt.h, lib/Makefile.in, lib/myopt.c,
    main/main.c main/query.c dpkg-deb/main.c split/main.c dselect/main.cc,
    lib/startup.c: New functions, standard_startup, standard_shutdown, that
    contain the most common functions that all dpkg binaries call.

Thu May 23 23:23:03 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/lock.c: Use setcloexec wrapper instead of calling fcntl directly.

Thu May 23 15:21:09 CDT 2002 Adam Heath <doogie@debian.org>

  * TODO: Add items for --reconfigure and --call-maint-script.

Thu May 23 11:16:28 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/lock.c: Always set CLOEXEC on the lock fd.

Wed May 22 13:03:41 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/Makefile.in: Remove hash.c from SOURCES, as it is a test file.

Tue May 21 17:20:12 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * debian/dpkg.postinst: remove compat stuff for ancient dpkg versions.
    This also enables the /usr/info/dir move code which was never reached

Mon May 20 00:58:17 CDT 2002 Adam Heath <doogie@debian.org>

  * main/enquiry.c, main/main.h, utils/md5sum.c, split/dpkg-split.h,
    split/split.c, lib/Makefile.in, include/dpkg.h.in, dpkg-deb/build.c,
    dpkg-deb/dpkg-deb.h: Even more gcc warning fixes.

Sun May 19 23:39:02 CDT 2002 Adam Heath <doogie@debian.org>

  * <all Makefile.in>, Makefile.conf.in: Add rules to Makefile.conf, to
    rebuild Makefile if $(srcdir)/Makefile.in is modified.  This also
    required adding a 'default' target to all Makefiles.

Sun, 19 May 2002 22:56:41 -0500 Adam Heath <doogie@debian.org>

  * utils/md5sum.c: Fairly heavy work(net no lines changed), to fix
    longjmp() clashing variable warnings.  Also, a few miscellaneous gcc
    -W<foo> fixes.

Sun May 19 20:25:05 CDT 2002 Adam Heath <doogie@debian.org>

  * lib/showpkg.c, lib/utils.c, optlib/long-options.c, main/archives.c,
    main/configure.c, main/main.c, main/main.h, main/query.c,
    optlib/long-options.c, lib/showpkg.c, lib/utils.c: Several more gcc
    -W<foo> fixes.

Sun May 19 18:48:39 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/rules: Fix overzealous running of autoheader for every build.

Sun May 19 06:05:24 CDT 2002 Adam Heath <doogie@debian.org>

  * configure.in: Split out the -W*-prototype warnings into separate
    checks.

Sun May 19 06:01:31 CDT 2002 Adam Heath <doogie@debian.org>

  * configure.in, automake/dpkg.m4: Make a new macro, DPKG_C_GCC_ATTRIBUTE.

Sun May 19 05:57:24 CDT 2002 Adam Heath <doogie@debian.org>

  * automake/dpkg.m4.  Gah, I hate gcc.  AC_TRY_COMPILE() produces code
    of the form 'int main() { ... }'.  When -Werror -Wstrict-prototypes is
    given to gcc, it thinks the above code snippet is an error, and aborts.
    This was making DPKG_C_GCC_TRY_WARNS disable some -W options.  So, I
    no longer use AC_TRY_COMPILE.

Sun May 19 04:56:51 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/rules:  Oops.  The command to run is aclocal, not aclocal.m4.

Sun May 19 04:45:41 CDT 2002 Adam Heath <doogie@debian.org>

  * configure.in, config.h.bot(removed), acconfig.h(removed):  The latest
    autoheader/autoconf combination allows us to do everything in
    configure.in.  config.h.bot is now in AH_BOTTOM(), and the
    descriptions for all the defines(from acconfig.h) are now part of
    AC_DEFINE().

Sun May 19 04:41:07 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/rules: All the hard-coded calls to scripts/dpkg-gencontrol.pl
    are now down thru a variable, GENCONTROL.

Sun May 19 04:26:58 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/rules: Remove all calls to $(shell pwd), and use $(CURDIR).
    Also, `pwd` is removed.  There was a var, DIR := $(shell pwd);
    instances of this var were also replaced with CURDIR.

Sun May 19 04:18:46 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/rules: If automake/*.m4 is modified, rebuild aclocal.m4.  If
    aclocal.m4 or configure.in are modified, rebuild configure.in.
    config.h.in gets rebuilt if configure.in is modified.  And, lastly,
    configure is rerun, if configure or config.h.in is modified.

Sun May 19 04:09:25 CDT 2002 Adam Heath <doogie@debian.org>

  * debian/rules: Fix targets, so that if configure fails, but actually
    succeeds in creating config.status(as might happen if one has a
    c-style comment in configure.in, and the shell trys running /foo), then
    the build will actually fail correctly.

Sun May 19 02:31:11 CDT 2002 Adam Heath <doogie@debian.org>

  * acconfig.h: Oops.  Forgot to add #undef HAVE_GNUC25_UNUSED.

Sun May 19 02:31:11 CDT 2002 Adam Heath <doogie@debian.org>

  * config.h.bot, configure.in, optlib/getopt.c: Define an UNUSED macro,
    for __attribute__((unused)).

Sun May 19 02:31:11 CDT 2002 Adam Heath <doogie@debian.org>

  * optlib/error.h, optlib/getopt.c, utils/start-stop-daemon.c: Use
    the configure detected gcc __attribute__ macros, instead of
    hard-coding them.

Thu May 16 19:09:48 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * po/da.po: New version from Claus Hindsgaul <claus_h@image.dk>

Mon May 13 22:44:48 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * man/en/dpkg.8.sgml: document --force-confmiss and --force-bad-verify

Mon May  6 16:26:51 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * lots-a-files: update email address for Ian Jackson

Sun May  5 22:27:50 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * configure.in: expand all paths before doing substitution

Sun May  5 17:42:21 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * Makefile.conf.in: use @PACKAGE@ for dpkgconfdir as well
  * man/paths.ent.in: new file
  * configure.in: generate man/paths.ent

Sun Apr 21 12:23:40 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * include/dpkg.h.in: add DIFF #define
  * main/configure.c: use it

Sun Apr 14 16:13:16 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * man/en/deb-old.5.sgml: DocBook version of deb-old manpage
  * man/en/cleanup-info.8.sgml: DocBook version of cleanup-info manpage
  * man/en/dpkg-checkbuilddeps.1.sgml: DocBook version of dpkg-checkbuilds
    manpage

Sun Apr 14 00:49:09 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * scripts/controlllib.pl: accept multilpe consecutive empty lines

Sat Apr 13 22:59:25 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * man/en/deb-control.5.sgml: DocBook version of deb-control manpage

Sat Apr 13 18:07:48 CET 2002 peter karlsson <peterk@debian.org>

  * po/sv.po: Removed fuzzy translation.

Sat Apr 13 18:34:09 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * man/en/dselect.8.sgml: DocBook version of dselect manpage
  * man/en/dselect.cfg.5.sgml: DocBook version of dselect.cfg manpage
  * man/en/dpkg.cfg.5.sgml: DocBook version of dpkg.cfg manpage
  * man/en/deb.5.sgml: DocBook version of deb manpage

Fri Apr 12 18:46:16 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * man/en/dpkg.8.sgml: DocBook version of dpkg manpage

Wed Apr 10 00:39:58 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * configure.in: use AC_SYS_LARGEFILE and bump autoconf requirement to 2.50
    since 2.13 does not include AC_SYS_LARGEFILE
  * utils/md5sum.h: include config.h earlier so we pick up the LFS flags
    before including the system includefiles
  * scripts/dpkg-source.1: fix typo (shlib instead of shlibs)

Mon Apr  1 18:57:02 CEST 2002 Wichert Akkerman <wichert@deephackmode.org>

  * dselect/pkgdepcon.cc: treat enhances like suggests in
    packagelist::resolvedepcon()

Mon Mar 11 23:22:37 CST 2002 Adam Heath <doogie@debian.org>

  * configure.in: Bad Wichert.  Always modify configure.in when adding
    subdirs(add pt_BR).

Fri Mar  1 23:51:06 CST 2002 Adam Heath <doogie@debian.org>

  * Makefile.in: Allow for make -j to work thru the top-level targets.
    There are problems, however, as the system will try to compile the
    programs before libdpkg is done.

Fri Mar  1 23:27:16 CST 2002 Adam Heath <doogie@debian.org>

  * main/help.c, debian/changelog: Fix segfault with getenv("PATH") returns
    null.

Fri Mar  1 23:22:55 CST 2002 Adam Heath <doogie@debian.org>

  * configure.in: Remove old doc/*/Makefile.  Bad Wichert.

Fri Mar  1 23:21:35 CST 2002 Adam Heath <doogie@debian.org>

  * po/pt_BR.po: Fix broken translations.

Mon Feb 25 15:22:34 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-gencontrol.pl: Fix test for incorrect packagename
    for -p option.

Sat Feb 16 15:14:30 CET 2002 peter karlsson <peterk@debian.org>

  * man/sv/deb-control.5, deb-old.5, deb.5, dpkg-split.8,
    start-stop-daemon.8: Fixed CVS revision pointers after move and
    updated translations to match latest versions.
  * man/sv/dpkg.cfg.5, man/sv/dselect.cfg.5: Translated new files.
  * man/en/dselect.cfg.5: Fixed numerous copy'n'paste errors.

Sun Feb 10 01:40:52 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * utils/start-stop-daemon.c: add FreeBSD support

Sun Feb 10 01:31:57 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * man/en/dselect.cfg.5, man/en/dpkg.cfg.5: new files
  * man/en/Makefile.in: install new manpages

Sun Feb 10 01:16:58 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * scripts/update-alternatives.pl: Improve working of --config output

Thu Feb  7 15:27:35 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * main/processarc.c: copy origin and bugs info into status file

Thu Feb  7 00:38:42 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * po/pt_BR.po: Fix bogosity in previous update

Thu Feb  7 00:28:35 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * scripts/update-alternatives.pl: fix logic error, alternatives are
    now correctly restored to auto when removing a manually selected
    alternative

Wed Feb  6 12:29:18 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * dselect/method.cc: check fgetc() for EOF return so we don't spin
    if we can't read input

Sun Feb  3 22:21:08 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * po/fr.po: Updated

Sun Feb  3 20:44:20 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * po/pt_BR.po: Updated

Sun Feb  3 01:50:02 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * doc/reference.sgml: new file

Sat Feb  2 23:00:25 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * More imports from v1_9
  * debian/changelog: add changes from 1.9.18 and 1.9.19
  * debian/dpkg.conffiles: Mark /etc/alternatives/README as a conffile.
  * debian/control: Changed maintainer to debian-dpkg@lists and add Uploaders
  * main/processarc.c: Fix MD5Sum corruption when upgrading a package, and
    the width of the ASCII representation of the file system increased by
    one, thereby overwriting the start of the MD5Sum field.  This may also
    fix a segfault in certain cases.

Sat Feb  2 22:59:06 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * scripts/install-info.pl: Continue to read all data from a pipe, until
    EOF.  

Sat Feb  2 22:52:50 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-gencontrol: Make dpkg-gencontrol not warn about Uploaders.

Sat Feb  2 18:14:24 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * man/Makefile.in: add pt_BR to SUBDIRS
  * man/pt_BR/Makefile.in, man/pt_BR/update-alternatives.8,
    man/pt_BR/.cvsignore: new files

Sat Feb  2 16:47:41 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * Makefile.in: add man to subdirs
  * man/*: new directory with all manpages

Sat Feb  2 16:23:43 CET 2002 Adam Heath <doogie@debian.org>

  * po/da.po: Updated

Sat Feb  2 00:18:04 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * automake/dpkg.m4: add DPKG_CHECK_DEFINE
  * configure.in: test for TIOCNOTTY in sys/ioctl.h
  * utils/start-stop-daemon.c: move tty change outside OS specific ifdef
    and use the new TIOCNOTTY test instead

Fri Feb  1 19:10:02 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * po/ca.po: New Catalan translation
  * configure.in: Add ca to LINGUAS

Fri Feb  1 17:37:24 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: add test for setsid
  * utils/start-stop-daemon.c: use setsid if it exists and only use
    setpgid if it does not exist

Fri Feb  1 16:41:23 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * utils/start-stop-daemon.c: Merge patch from Andres Voegele
    <voegelas@users.sourceforge.net> to add HP-UX support
    
Fri Feb  1 13:58:59 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * po/fr.po: updated.

Thu Jan 31 21:34:14 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * scripts/install-info.pl: add -c option to gzip invocation

Thu Jan 31 14:56:38 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * doc/fr/install-info.8, doc/fr/update-alternatives.8: updated with
    new version from Philippe Batailler

Wed Jan 30 10:31:38 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * scripts/update-alternative.pl: exit with non-zero exitcode when
    doing --display for a nonexisting alternative

Wed Jan 30 00:29:07 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * split/Makefile.in: create parts directory

Wed Jan 30 00:24:36 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * utils/start-stop-daemon.c: Fix tyop in help message

Fri Jan 18 20:40:42 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-source.pl: Use -Z option for patch and set TZ to UTC0
    when calling diff. This gives us reliable timestamps in diffs.

Thu Jan  3 15:49:14 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-genchanges.pl, scripts/dpkg-scanpackages.pl,
    scripts/dpkg-scansources.pl: Accept GNU md5sum style output

Thu Jan  3 15:20:25 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * utils/md5sum.c: add error handling to do_check

Wed Jan  2 16:08:02 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-source.pl: Update default ignore expression to also
    match *~ and *.swp in subdirs.

Wed Jan  2 15:00:26 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-checkbuilddeps.pl: use space separated output instead
    of comma separated

Tue Jan  1 14:10:55 CET 2002 Wichert Akkerman <wakkerma@debian.org>

  * archtable, scripts/dpkg-architecture.pl: Update SuperH architecture

Mon Dec 31 17:38:26 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/main.cc, main/main.c, main/query.c: no longer set LC_CTYPE
    to C since that breaks the braindead gettext.
  * dpkg-deb/build.c, lib/dbmodify.c, lib/vercmp.c, main/remove.c: Switch
    to using cisdigit and cisalpha.

Mon Dec 31 17:28:10 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * lib/utils.c: new file with general utility functions. Add
    cisalpha() and cisdigit() functions, similar to the ctype is*
    ones but which only accept C locale
  * lib/Makefile.in: add utils.c
  * include/dpkg.h: add utils.c functions

Mon Dec 31 15:25:46 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-architecture.pl: fix syntax error

Wed Nov 28 18:11:38 CST 2001 Adam Heath <doogie@debian.org>

  * scripts/dpkg-checkbuilddeps.{1,pl}: Make dpkg-checkbuilddeps always
    check for build-essential.

Wed Nov 28 17:46:23 CST 2001 Adam Heath <doogie@debian.org>

  * debian/changelog: Note that the dselect.deb split closes a bug.

Wed Nov 28 17:40:52 CST 2001 Adam Heath <doogie@debian.org>

  * scripts/update-alternatives.{pl,8}: Apply patch from debian bug 120924,
    to give update-alternatives a --list command.

Wed Nov 28 17:30:16 CST 2001 Adam Heath <doogie@debian.org>

  * utils/md5sum.c: When parsing stdin, md5sum now displays '-' as the
    filename, to match textutils md5sum.

Wed Nov 28 17:20:28 CST 2001 Adam Heath <doogie@debian.org>

  * scripts/install-info.pl: Copy dir from backup if the file is empty
    as well.

Sat Nov 17 17:20:52 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * doc/sv/Makefile.in: install dpkg-query and dpkg-deb manpages

Sat Nov 17 17:16:44 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * debian/control: add missing space in dpkg-doc description

Sat Nov 17 15:57:57 CET 2001 peter karlsson <peterk@debian.org>

  * doc/sv/dpkg-query.8, dpkg-deb.1: Initial Swedish translation.
    dpkg.8: Translation fixups.
  * dpkg/dpkg-query.8: Corrected spelling.

Thu Oct 25 16:56:06 JST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/{de,it,pt_BR,sv}.po: Fix translation with inconsistent printf
    format strings

Sun Oct 21 12:58:04 CDT 2001 Adam Heath <doogie@debian.org>

  * optlib/Makefile.in: Run ranlib after creating the library.

Sun Oct 21 12:56:37 CDT 2001 Adam Heath <doogie@debian.org>

  * archtable, scripts/dpkg-architecture.pl: Add darwin.  The source
    doesn't quite work yet on darwin however, as some of the changes are
    being discussed.

Sun Oct 21 03:57:08 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/pl.po: Updated

Wed Oct 17 12:34:19 CDT 2001 Adam Heath <doogie@debian.org>

  * Merge 1.9.17 branch:
    * debian/rules: remove update-rc.d from the package
    * debian/control: update conflict with sysvinit to deal with moved
      update-rc.d

Tue Oct 16 13:09:21 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/pl.po: Updated

Sun Oct 14 15:04:24 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/da.po: Updated

Mon Oct  8 19:51:36 CDT 2001 Adam Heath <doogie@debian.org>

  * main/main.c: Turn setstatuspipe into a generic setpipe, in preparation
    for --result-fd.

Mon Oct  8 19:48:28 CDT 2001 Adam Heath <doogie@debian.org>

  * main/main.c: Make sure the integer passed to --result-fd is correct
    before manipulating the pointers(we checked after we manipulated
    previously)

Sun Oct  7 22:23:54 CDT 2001 Adam Heath <doogie@debian.org>

  * Makefile.in: Remove dulicate inclusion of utils in SUBDIRS.

Sun Oct  7 19:38:56 CDT 2001 Adam Heath <doogie@debian.org>

  * scripts/install-info.pl: oops.  We weren't adding '\n' when printing
    out the reformated info text.
 
Sun Oct  7 05:00:02 CDT 2001 Adam Heath <doogie@debian.org>

  * scripts/install-info.pl: Don't print out the info entry every time we
    are called.

Sun Oct  7 03:12:35 CDT 2001 Adam Heath <doogie@debian.org>

  * debian/control: Several fixes:
    * dpkg-static needs the same set of Depends(and others) lines as dpkg.
    * Modify the dpkg-static description to note that it's a static
      compile.
    * Bump the conflicts on sysvinit to 2.82-1, as that is the version
      that actually has the proper replaces line.
  * debian/rules: dpkg-static was actually being built as dpkg.deb.

Thu Sep 20 17:06:48 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * debian/rules: strip enoent as well

Sat Sep 15 20:19:57 CDT 2001 Adam Heath <doogie@debian.org>

  * scripts/install-info.pl: Several fixes:
    * Move /usr/info/dir to /usr/share/info/dir.
    * Improve message when locking and /usr/share/info/dir doesn't exist.
    * Use /var/backups/infodir.bak if the above doesn't exist.
    * Allow for relative filenames, and add a --remove-exactly option.
    * Use section from the .info file if --section is not given.
    * Include current filename in error messages.
    * Format /usr/share/info/dir entries to uniform width.
    * --calign|--align|--maxwidth are now ignored.

Wed Sep 12 18:45:57 CDT 2001 Adam Heath <doogie@debian.org>

  Fixes for building of dpkg-static.deb.
    * Can't build both dpkg.deb and dpkg-static.deb in single run, because
      /etc is moved from $(INSTALL_TMP), instead of copied.
    * dpkg-static.deb is added to debian/files, even if it isn't created.
    * dpkg-static.tar.gz is added to debian/files, even if it doesn't exist.

Wed Sep 12 17:28:57 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dpkg-deb/main.c: Fix unterminated line in usage text

Mon Sep 10 12:57:21 PDT 2001 Wichert Akkerman <wakkerma@debian.org>

  * dpkg-deb/dpkg-deb.h: add parseformat prototype
  * dpkg-deb/main.c: add parseformat and show options, change layout
    for usage info, remove copyright from version output and refer to
    the dpkg --license option instead
  * dpkg-deb/info.c: implement do_show

Mon Sep 10 12:41:14 PDT 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/showpkg.c: move to lib/ so multiple tools can share it
  * main/Makefile.in: remove showpkg.c
  * lib/Makefile.in: add showpkg.c
  * include/dpkg-db.h: add showpkg.c prototypes
  * main/query.h: obsolete now, removed

Mon Sep 10 12:07:20 PDT 2001 Wichert Akkerman <wakkerma@debian.org>

  * dpkg-deb/info.c: count how many control components are missing
    in info_spew()
  * main/processarc.c: change two more 0s into NULLs

Mon Sep 10 10:59:53 PDT 2001 Wichert Akkerman <wakkerma@debian.org>

  * include/parsedump.h, lib/dump.c: add flags to fwritefunction.
    Implement fw_printheader to toggle printing of field headers.
  * main/showpkg.c: modify show1package() to no longer remove the
    fieldname and newline itself but make wcall not print it instead

Mon Sep 10 09:44:54 PDT 2001 Wichert Akkerman <wakkerma@debian.org>

  * lib/dump.c: make w_booleandefno get the fieldname from the fip
    instead of hardcoding Essential
  * lib/fields.c: don't harcode `essential' fieldname in f_boolean
     convert_string call

Sun Aug 19 15:20:53 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * utils/start-stop-daemon.c: do not start a command if the pidfile
    option is used and the pid in that file is still running

Sun Aug 19 00:25:12 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * doc/fr/dpkg-{query,split,statoverride}.8: added
  * doc/fr/*: Updated

Thu Aug 16 00:43:23 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/fr.po: Updated

Sat Aug 11 22:54:18 CEST 2001 peter karlsson <peterk@debian.org>

  * po/sv.po, doc/sv/dpkg.8: Updated Swedish translation.

Wed Aug  1 17:31:23 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/dpkg-query.8: added
  * main/Makefile.in, debian/rules: install dpkg-query.8

Wed Aug  1 16:37:47 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/dpkg.8: remove Linux references

Wed Aug  1 15:35:32 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * debian/copyright: mention we have copyright for 2001 as well
  * main/query.c: improve help and version texts
  * main/main.c: use DPKG define in printversion output

Wed Aug  1 15:10:06 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/query.c: fmt can't be const since we free it in the same function

Tue Jul 31 12:26:41 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/de.po: Updated
  * main/query.c: Fix help texts a bit to reflect that dpkg-query is
    not dpkg
  * dselect/main.cc: Use `colour' consistently for printed texts.

Fri Jul 27 04:21:51 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * debian/control: fix typo in section for dpkg-doc, correct
    replaces for dselect and remove Linux references

Fri Jul 27 04:05:55 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/POTFILES.in: add main/query.c and main/showpkg.c

Fri Jul 27 04:04:26 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/da.po: Updated

Fri Jul 27 03:54:34 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * lib/parsedump.h: move to include/parsedump.h so dpkg-query can
    use it

Fri Jul 27 03:52:33 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/Makefile.in: changed things around to dpkg-query builds more
    easily

Fri Jul 27 03:43:52 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/query.c: remove -D from usage, we don't support it
  * main/showpkg.c: add support for field width specification

Thu Jul 26 14:27:23 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/Makefile.in, doc/fr/Makefile.in, doc/ja/Makefile.in,
    debian/rules: no longer install update-rc.d, it moved to the sysvinit
    package
  * debian/control: Update sysvinit conflicts to version 2.80
  * doc/ja/update-rc.d.8, doc/fr/update-rc.d.8, scripts/update-rc.d.8,
    scripts/update-rc.d.pl: removed

Thu Jul 26 13:52:43 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * utils/start-stop-daemon.c: seems glibc has a completely non-standard
    return value for nice(2), so deal with that properly now so things also
    work on non-glibc systems.

Tue Jul 24 19:07:43 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/showpkg.c, main/query.h: new files
  * main/query.c: add support for show options

Wed Jul 18 17:28:38 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/Makefile.in, debian/rules: install dpkg-query as well

Wed Jul 18 01:04:15 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * doc/ru.po: Updated

Tue Jul 17 16:53:12 CEST 2001 Wichert Akkerman <wakkerma@debian.org>
  
  * Merge changes from v1_9 branch
    + debian/changelog: add 1.9.15 and 1.9.16 releases
    + scripts/dpkg-source.pl: 
      - Add handleformat sub to check if we can handle a dscformat
      - Revert dscformat to 1.0. Technically we changed a few things
        but older versions of dpkg-source did not handle minor updates
        to the dscformat. New policy is that minor updates (last digit
        changes) to the dscformat have to be fully backward and forward
        compatible.
      - restore test if tar exited with exited with a non-zero exitcode
      - remove a bunch of commented debug statements
    + main/help.c: fix narglist construction building and usage in do_script() 

Tue Jul 17 00:36:32 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/dselect.8: document new search features

Mon Jul 16 18:14:16 CEST 2001 peter karlsson <peterk@debian.org>

  * po/sv.po, doc/sv/deb.5, doc/sv/deb-old.5, doc/sv/dselect.8, doc/sv/dpkg.8:
    Swedish translation updates.

Mon Jul 16 17:19:21 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/basecmds.cc, dselect/dselect.h: 
    + add checksearch and matchsearch functions to abstract searching algorithm
    + add displayerror member function
  * dselect/baselist.cc: use new checkserach and matchsearch functions to
    do the real search/matching
  * dselect/pkglist.cc, dselect/pkglist.h: implement checksearch and
    matchsearch using regular expressions

Mon Jul 16 15:20:07 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/main.c, main/query,c. dselect/main.cc: use C locale for LC_CTYPE
    so we can be sure packagename and version comparisons work as expected

Mon Jul 16 14:10:18 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * lib/vercmp.c: New verrevcmp() from Anthony Towns

Mon Jul 16 13:27:44 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * Merge a modified patch from Josip Rodin:
    + dselect/basecmds.cc: Improve some help texts and helpscreen keybindings
    + dselect/helpmsgs.src: Improve text

Mon Jul 16 12:55:49 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * utils/start-stop-daemon.c: Fix test for nice(2) failure

Mon Jul 16 12:44:51 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/dselect.h: make baselist::setheights() virtual
  * dselect/method.h: add setheights() member and fix protection
  * dselect/methlist.cc: override setheights() to make list_height 1
    higher then the default so we draw the list correctly
  * dselect/methkeys.cc: make Q do abort so we are consistent with the pkglist

Mon Jul 16 01:50:58 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * Merge a reworked version of a patch from Joey Hess
    + dselect/dselect.8: Document new colour options
    + dselect/basecmds.cc: properly draw the background using helpscreen_attr
    + dselect/baselist.cc: change drawing code to use new changeable colours
    + dselect/dselect.h: Add all the colour structures
    + dselect/main.cc: Parse --colour options

Mon Jul 16 00:01:24 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/baselist.cc: include unistd.h which is needed to get the
    ioctl prototype on Solaris

Sun Jul 15 00:37:13 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * debian/preinst: removed (we now use dpkg.preinst)
  * debian/control:
    + add dselect package
    + fix section of dpkg-doc
  * debian/dpkg.conffiles: remove dselect.cfg
  * debian/dselect.{conffiles,postinst,prerm}: added
  * debian/rules: 
    + add German to list of manpage translations
    + split out dselect into its own package
    + strip enoent and start-stop-daemon as well

Sat Jul 14 23:35:57 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/main.cc, dpkg/main.c: add per-user configuration file

Sat Jul 14 01:38:27 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * Merge dselect patch from Joey Hess 
    + dselect/dselect.h: add manual_install prototype
    + dselect/pkgcmds.cc, dselect/pkgsublist.cc: modify kd_select() and
      repeatedly display() to set/unset manual_install so we can identify
      user-selected packages
    + dselect/pkglist.h: add dp_should priority
    + dselect/pkgdepcon.cc: modify resolvedepcon() to handle recommends
      and suggests differently

Sat Jul 14 01:18:33 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * doc/de/Makefile.in: fix syntax error

Fri Jul 13 20:39:24 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * doc/deb-old.5, doc/deb.5: remove emacs hints and Linux references
  * dpkg-deb/dpkg-deb.1: Fix typo
  * scripts/dpkg-name.1: Don't mention the non-existing dpkg(5)
  * dselect/dselect.8: Merged changes from Joost Kooij

Fri Jul 13 00:54:24 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * doc/de/Makefile.in, doc/de/md5sum.1: added
  * configure.in, doc/Makefile.in: Process German documentation

Fri Jul 13 00:46:02 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/de.po: New version

Fri Jul 13 00:43:23 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-architecture.pl: improve documentation

Mon May 21 03:48:29 CEST 2001 Marcus Brinkmann <brinkmd@debian.org>

  * scripts/dpkg-checkbuilddeps.pl: Call dpkg-architecture instead dpkg
    to determine the host architecture.  Rename BUILD_ARCH to HOST_ARCH.

Fri Jul  6 00:27:17 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

 * scripts/dpkg-divert.8: Fix layout error in synopsis

Mon Jul  2 00:00:04 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: add doc/ru/Makefile.in
  * debian/rules: don't pass CFLAGS to configure
  * dselect/pkgkeys.cc: make `n' do searchagain instead

Sun Jul  1 16:12:30 CDT 2001 Adam Heath <doogie@debian.org>

  * main/archives.c: When a package is on hold, -E will not skip the same
    version when installing.

Sat Jun 30 01:48:15 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * doc/ru/*: Added Russian translations from Alexey Mahotkin
    <alexm@hsys.msk.ru>

Mon Jun 25 03:31:55 CDT 2001 Adam Heath <doogie@debian.org>

  * Merged in changes from 1.9.11 to 1.9.14 branches.

    + scripts/dpkg-source.pl: Disable source package sanity checking.
    + scripts/dpkg-source.pl: make Uploaders optional.
    + scripts/controllib.pl: Set the default to convert warnerrors
      into warnings.
    + scripts/dpkg-source.pl: Remove a warnable error if the orig.tar.gz
      contains './'.
    + scripts/dpkg-source.pl: Handle symlinks in the tarball, and don't
      error out if found.
    + scripts/dpkg-source.pl: Add support for an Uploaders field, which is
      read from the first paragraph of debian/control, and propagated to
      the .dsc.  This lists the people allowed to upload a package.  If it
      is not set, then the value of the Maintainer is placed into this
      field of the .dsc.  This bumps the .dsc format to 1.1.
    + scripts/dpkg-source.pl: Handle stating of truncated cpio filenames
      (100 char limit, bah)
    + scripts/dpkg-source.pl: Set LC_ALL before calling external programs,
      when we are going to parse their output.
    + scripts/dpkg-source.pl: Move the check for '\n' and '././@LongLink'
      before the check for leading './'.
    + dselect/main.cc: Handle window resize in main menu
    + scripts/dpkg-source.pl: Add a warnable error if the orig.tar.gz
      contains './'.
    + scripts/dpkg-source.pl: Handle the case where a single directory
      exists in the orig.tar.gz, but it is NOT of the form <pkg>-<ver>.
    + scripts/dpkg-source.pl: Don't error out if the files in the tar
      have leading './'.
    + scripts/dpkg-source.pl, scripts/controllib.pl, scripts/dpkg-source.1,
      scripts/dpkg-buildpackage.sh: Add support for -W, which turns certain
      errors into warnings, and -E, which turns them back into errors again.
    + scripts/dpkg-source.pl: When the tarball doesn't contain directories,
      only display the warning once for each directory.
    + THANKS: Added Colin Watson.  Also put in an email address for Colin
      Plumb.
    + scripts/dpkg-source.pl: Grumble.  Fix case where top-dir in
      orig.tar.gz was renamed to .orig.

Fri Jun 22 19:26:41 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/main.cc: Handle window resize in main menu

Wed Jun 20 18:56:35 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/help.c: actually use narglist in do_script()

Wed Jun 20 11:28:25 CDT 2001 Adam Heath <doogie@debian.org>

  * Merged in changes from 1.9.10 to 1.9.11 branch.

    + scripts/dpkg-source.pl: Fix typo.
    + scripts/dpkg-buildpackage.sh: Option -a implies option -d.
      Set ARCH correctly to host architecture, rather than build arch.
    + scripts/dpkg-gencontrol.pl: Error if an illegal package name is used.
    + scripts/cl-debian.pl: Change list of allowed urgencies to: low, medium,
      high, and critcial.
    + scripts/dpkg-scanpackages.pl: warn instead of die when find returns
      an error(which happens if there is a dangling symlink, because we use
      -follow).
    + scripts/dpkg-source.pl: Apply patch from Colin Watson:
      * Reset SIGPIPE to DEFAULT when forking gzip.
      * set LANG to C before execing cpio, as we parse its output.
      * In checktarcpio() and checktarsane(), use the previously open pipes,
        instead of the opening files on disk(which was the old, ancient way).
      * Improve the output parsing of tar in checktarsane().
    + scripts/dpkg-source.pl: When both arch: all and arch: <arch> packages
      exist in debian/control, don't promote the source arch: to any, but
      only list all and <arch>.
    + scripts/dpkg-source.pl: Make it work with GNU md5sum.
    + scripts/dpkg-source.1: Document -nc for dpkg-buildpackage.
    + scripts/dpkg-genchanges.pl: Set the Architecture to 'source' only when
      doing source only uploads in the generated changes files.
    + scripts/dpkg-shlibdeps.pl: Fix infinite directory recursion thru
      symlinks.
    + doc/deb.5: Changed see-also reference to deb-old(5).
    + scripts/{Makefile.in,dpkg-architecture.1}: Removed the manpage, and
      generate it from the script now.
    + scripts/dpkg-architecture.pl: Apply patch to correctly check the output
      of gcc on hurd.
    + scripts/dpkg-checkbuilddeps.pl: Fix logic error that kept everything
      but Build-Deps from working.
    + scripts/dpkg-checkbuilddeps.pl: Trim trailing spaces from packages.

Sat Jun 16 18:52:17 CDT 2001 Adam Heath <doogie@debian.org>

  * Merge changes from v1_9_10 tag:
    + scripts/update-alternatives.pl: Fix switching to auto mode if
      alternative symlink goes missing.
    + scripts/dpkg-source.pl: s/DEAD_JOE/DEADJOE/
    + scripts/dpkg-divert.pl: Fix cleanup of devert.tmp files.
    + scripts/dpkg-checkbuilddeps.pl: Fix [arch] parsing, and handle
      more variations of spaces.

Sat Jun 16 22:04:04 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/es.po: Updated

Sat Jun 09 10:48:14 CEST 2001 peter karlsson <peterk@debian.org>

  * po/sv.po, doc/sv/dpkg.8: Updated

Sat Jun  9 00:28:11 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * debian/changelog: import 1.9 releases
  * debian/control: add sgmltools-lite to Build-Depends
  * Merge changes from v19 branch:
    + archtable: add i386-gnu0.2
    + dpkg-deb/extract.c: More %z format fixes.
    + dselect/method.cc: don't include curses.h since dselect.h already
      does that for us
    + dselect/method.cc: handle interrupted getc in falliblesubprocess()
      prompt
    + include/dpkg.h.in: add setcloexec declaration
    + lib/mlib.c: add setcloexec(), utility function to set FD_CLOEXEC flag
    + lib/dbmodify.c: use setcloexec() on status file
    + main/filesdb.c: use setcloexec for diversions and statoverride files
    + main/archives.c: add functions to initialize and destroy the obstack,
      ensure obstack is initialized in try_remove_can() as well
    + lib/parsehelp.c: Correctly handle trailing spaces in versions.
    + main/dpkg.8: it's /etc/dpkg/dpkg.cfg, not /etc/dpkg.cfg
    + main/dpkg.8: Improve description of --force-confdef
    + main/help.c: don't ignore failed maintainer scripts
    + scripts/dpkg-architecture.pl: spell dependency consistently
    + scripts/dpkg-checkbuilddeps.1: spell dependency consistently
    + scripts/dpkg-source.1: spell dependency consistently
    + scripts/dpkg-buildpackage: fix pausing logic, and use $changedby as the
      signing ID
    + scripts/dpkg-checkbuilddeps.pl: Handle varied use of spaces.
    + scripts/dpkg-checkbuilddeps.pl: handle multi-line fields
    + scripts/dpkg-divert.pl: fix test for illegal packagename
    + split/info.c: Change format string, to handle size_t.
    + utils/start-stop-daemon.c: consistently use pid_t and uid_t
    + debian/control: use a Conflict for sysvinit instead of a Depends

Fri Jun  8 19:42:43 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/fr.po: updated

Sat Jun  2 15:09:01 CDT 2001 Adam Heath <doogie@debian.org>

  * scripts/dpkg-architecture.pl: Remove bogus check of $!.

Sat Jun  2 15:04:09 CDT 2001 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.pl: Reset SIGPIPE back to a default handler, for
    callers that have it masked off.

Sat Jun  2 14:48:35 CDT 2001 Adam Heath <doogie@debian.org>

  * scripts/dpkg-checkbuilddeps.pl: Handle varied use of spaces.

Sat Jun  2 14:09:28 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/parsehelp.c: Remove leading and trailing spaces from versions, and
    check if there are embedded spaces in versions.

Tue May 29 07:27:31 CEST 2001 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated.

Mon May 28 22:54:35 CDT 2001 Adam Heath <doogie@debian.org>

  * configure.in: AC_REQUIRE is not valid outside of AC_DEFUN.
  * automake/dpkg.m4: DPKG_CACHED_TRY_COMPILE was defined with both
    AC_DEFUN() AND define().
 
Mon May 28 19:07:15 CDT 2001 Adam Heath <doogie@debian.org>

  * debian/changelog: Update for 1.9.7.

Mon May 28 19:02:52 CDT 2001 Adam Heath <doogie@debian.org>

  * scripts/dpkg-divert.pl: Fix cleanup of .dpkg-devert.tmp files.

Mon May 28 16:40:19 CDT 2001 Adam Heath <doogie@debian.org>

  * po/it.po: Updated.

Mon May 28 16:27:43 CDT 2001 Adam Heath <doogie@debian.org>

  * main/archives.c: If extracting a directory, and it doesn't already
    exist on disk, and is shared with another package, don't error cause an
    error.

Mon May 28 16:23:26 CDT 2001 Adam Heath <doogie@debian.org>

  * doc/ja/822-date.1, doc/ja/Makefile.in, doc/ja/cleanup-info.8,
    doc/ja/deb-control.5, doc/ja/deb-old.5, doc/ja/deb.5,
    doc/ja/dpkg-checkbuilddeps.1, doc/ja/dpkg-deb.1, doc/ja/dpkg-divert.8,
    doc/ja/dpkg-name.1, doc/ja/dpkg-scanpackages.8,
    doc/ja/dpkg-scansources.8, doc/ja/dpkg-statoverride.8, doc/ja/dpkg.8,
    doc/ja/install-info.8, doc/ja/start-stop-daemon.8,
    doc/ja/update-alternatives.8, doc/ja/update-rc.d.8: Updated.

Mon May 28 16:19:51 CDT 2001  Adam Heath <doogie@debian.org>

  * dpkg-deb/extract.c, dselect/main.cc, lib/database.c, main/help.c,
    main/main.c, split/info.c, utils/start-stop-daemon.c: Fix some
    gcc 3.0 warnings.

Mon May  7 23:07:01 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/depcon.c: restore previous statement to break reverse cycles 

Mon May  7 23:04:55 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/dump.c: break up an assertion so it is easier to figure out what
    went wrong.

Sun May  6 13:20:07 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/archives.c: add safe_read() to read from a pipe and deal
    with partial reads. Modify tarobject() and tarfileread() to use
    those.

Sat May  5 00:49:31 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * pl/cs.po: Updated
  * pl/de.po: Updated
  * po/pl.po: Updated
  * dselect/pkgtop.cc: Mark another strang as translatable

Fri May  4 00:19:05 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/main.cc: oops, swapped j and k key bindings for main menu

Wed May  2 20:41:10 CDT 2001 Adam Heath <doogie@debian.org>

  * include/dpkg.h.in, main/Makefile.in main/enquiry.c main/main.c,
    main/query.c: Split out code for commands -sSlLp into a separate
    binary, dpkg-query, and have the normal dpkg binary exec this.  Also,
    dpkg now uses a macro to define external backends to call.

Wed May  2 12:32:24 CDT 2001 Adam Heath <doogie@debian.org>

  * configure.in: If --without-zlib was given, and static programs were
    enabled, the compile would fail.

Tue May  1 23:05:48 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/parse.c: Oops.  EOF_mmap was incorrectly detecting the end of the
    data block.
  * main/depcon.c: After fixing the above bug, and using debootstrap to
    build a sid chroot, I discovered that my previous dependency cycle fix
    could cause segfaults in some situations.

Tue May  1 00:24:49 CDT 2001 Adam Heath <doogie@debian.org>

  * acconfig.h, config.h.bot, configure.in, lib/varbuf.c, debian/changelog:
    Check for __va_copy, and use it, instead of a direct assignment, for
    broken arches, like ppc.
  
Mon Apr 30 17:34:47 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: remove last list reference.

Mon Apr 30 14:22:25 EDT 2001 Adam Heath <doogie@debian.org>

  * debian/changelog: Recompile for 1.9.2, to fix badly generated
    dpkg-divert.

Mon Apr 30 10:04:36 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/mlib.c: EAGAIN patch from 1.8 branch was not applied to HEAD.

Sun Apr 29 22:39:55 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/database.c, lib/fields.c: Fix Eterm/eterm problem.  findpackage()
    now does tolower() before searching for a name, and f_name() uses the
    name field from the return value of findpackage().

Sun Apr 29 22:08:37 CDT 2001 Adam Heath <doogie@debian.org>

  * Makefile.conf.in, configure.in, debian/control, debian/rules,
    dpkg-deb/Makefile.in, main/Makefile.in, utils/Makefile.in,
    .cvsignore debian/.cvsignore: Added -static support.  There is support
    for building a dpkg-static.deb, but this is not used during a normal
    run.  However, a -static.nondebbin.tar.gz file is created, in addition
    to the normal nondebbin.tar.gz.

Mon Apr 30 02:35:02 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * debian/control: update section and priorities to match the dinstall
    overrides

Sat Apr 28 16:34:24 CDT 2001 Adam Heath <doogie@debian.org>

  * version-nr: Oops, forgot to update this.

Sat Apr 28 16:17:58 CDT 2001 Adam Heath <doogie@debian.org>

  * utils/md5sum.c, debian/changelog: Fix md5sum -c.

Sat Apr 28 15:22:25 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/nfmalloc.c: in nfstrnsave, don't set the char after the end, but
    set the end, to \0.
  * lib/parse.c: Don't loose the last char of a field value, when EOF is
    hit.

Sat Apr 28 14:31:27 CDT 2001 Adam Heath <doogie@debian.org>

  * scripts/dpkg-divert.pl, debian/changelog: Fix removing of diversions.
    This has always been broken, but was just masked by another bug, that
    made it work. :|

Sat Apr 28 12:18:55 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-buildpackage.sh: only check for valid sign interface
    when the user specifies one
   
Sat Apr 28 03:33:28 CDT 2001 Adam Heath <doogie@debian.org>

  * debian/dpkg.cfg: Changed to include no-debsig by default, as no debs
    are currently signed, and we get false errors when debsig-verify is
    installed.  This will be removed in the future, when the archive tools
    support package signatures.

Fri Apr 27 20:43:25 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/nfmalloc.c: nfstrnsave() was not allocated n+1 chars, and was not
    setting the n+1 byte to \0.

Sat Apr 28 02:52:56 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-shlibdeps.pl: do not care if dpkg --search returns
    with an error: it will do that know if we search for something
    that is not installed which is a valid case for us.

Fri Apr 27 13:14:04 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/parse.c, debian/changelog: Fix a segfault when reading an empty
    file in parsedb(), imported from head.

Thu Apr 26 13:15:02 CDT 2001 Adam Heath <doogie@debian.org>

  * main/configure.c: Update to work with recent lib/mlib.c change in
    md5 handling.

Thu Apr 26 11:51:34 CDT 2001 Adam Heath <doogie@debian.org>

  * split/{info,join,main,queue,split}.c: s/0/NULL/

Thu Apr 26 13:36:41 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * utils/md5sum.c: use libdpkg error handling since fd_md5 uses that
    to report errors.

Wed Apr 25 20:20:07 CDT 2001 Adam Heath <doogie@debian.org>

  * utils/md5sum.c, lib/mlib.c: Modified mlib.c, to malloc enough space
    for the digest, instead of modifying the static buffer that was
    previously passed in.

Thu Apr 26 00:32:35 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/da.po: Updated

Wed Apr 25 18:46:47 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/dselect.8: document dselect.cfg

Wed Apr 25 17:27:36 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/es.po: Updated

Wed Apr 25 13:15:41 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/dpkg.8: document dpkg.cfg

Wed Apr 25 13:05:13 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/dpkg.8: Fix formating error

Wed Apr 25 02:20:40 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/gl.po: Updated

Wed Apr 25 01:09:50 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/{ja,ru}.po: fix inconsistencies in line endings wrt \n

Wed Apr 25 00:56:14 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/ru.po: Updated

Wed Apr 25 00:29:51 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/da.po: New Danish translation
  * configure.in: add da to ALL_LINGUAS

Tue Apr 24 20:57:48 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/ja.po: Updated

Tue Apr 24 20:28:04 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/cs.po: Updated
  * po/pl.po: Updated

Tue Apr 24 17:23:05 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/main.c, po/*.po: fix typo

Tue Apr 24 14:44:28 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * bunch-o-files: move dpkg-scansources manpage to section 8

Tue Apr 24 14:31:41 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * debian/rules: install enoent in the dpkg package

Tue Apr 24 14:29:03 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * debian/rules: actually install French manpages as well

Tue Apr 24 13:38:58 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-divert.pl: Fix wrong errno test

Tue Apr 24 13:35:08 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/it.po: New version from Lele Gaifax

Tue Apr 24 13:21:39 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * Merge SuperH patch from YAEGASHI Takeshi
  * archtable: add SuperH variants
  * scripts/dpkg-architecture.pl: fix typo (shed -> sheb)
  * scripts/dpkg-buildpackage.sh: fix dpkg-architecture call

Tue Apr 24 13:03:54 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * utils/enoent.c: new utility to get ENOENT value at runtime
  * utils/Makefile.in: install ENOENT in dpkglibdir
  * scripts/dpkg-divert.pl, update-alternatives.pl: use enoent to get
    ENOENT value

Tue Apr 24 13:01:28 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/Makefile.in, main/Makefile.in, utils/Makefile.in: use
    INSTALL_PROGRAM to install programs

Tue Apr 24 11:57:48 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/archives.c: spell recursive correctly
  * po/sv.po: updated so it still translates the fixed message
  * po/ru.po: updated

Tue Apr 24 07:02:01 CEST 2001 peter karlsson <peterk@debian.org>

  * doc/sv/dpkg.8, po/sv.po: Updated Swedish translation.

Tue Apr 24 02:55:21 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/de.po: remove Language-Team header, the debian-l10n-german
    list it pointed to does not exist.

Tue Apr 24 02:41:23 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/enquiry.c: add missing newline after error message

Tue Apr 24 02:13:43 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/main.cc: use myfileopt as well to read dselect.cfg
  * debian/dselect.cfg: new file
  * debian/rules: install dselect.cfg
  * debian/dpkg.conffiles: add dselect.cfg

Tue Apr 24 01:40:11 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect/pkglist.cc: repair qsort_compareentries

Mon Apr 23 18:08:37 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/parsehelp.c: Reduce memory a tad.
  * debian/changelog: Close additional bugs.
  * debian/rules: Added a build-static rule.

Mon Apr 23 17:17:35 CDT 2001 Adam Heath <doogie@debian.org>

  * main/enquiry.c: Additional add error returns for -L, -s, and -p.
  * debian/changelog: Close a debian bug because of this.

Mon Apr 23 23:54:34 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/main.h: add declaration for nerrs
  * main/enquiry.c: exit with non-zero exitcode if -l or -S do not 
    produce any output 

Mon Apr 23 16:09:38 CDT 2001 Adam Heath <doogie@debian.org>

  * include/dpkg.h.in, lib/mlib.c, main/archives.c, debian/changelog: Added
    new PROCNOERR flag, which disabled the error message that is displayed
    when a process has an error return.

Mon Apr 23 22:26:23 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/dpkg.8: note that force-overwrite is not enabled per default

Mon Apr 23 15:39:37 CDT 2001 Adam Heath <doogie@debian.org>

  * dpkg-deb/{build,extract,info}.c, include/dpkg.h.in, lib/mlib.c,
    main/{archives,enquiry,help,processarc}.c: Convert waitsubproc and
    checksubprocerr to use a flags variable, instead of separate ints.

Mon Apr 23 15:36:58 CDT 2001 Adam Heath <doogie@debian.org>

  * main/depcon.c, debian/changelog: When walking the list of providers of
    a dependency, the arguments were passed in reverse to the cyclebreak
    checker, so cycles involving provides were never detected.
  * debian/changelog: Document that we fixed a segfault.

Mon Apr 23 14:13:48 CDT 2001 Adam Heath <doogie@debian.org>

  * main/help.c: Fix bad memory access do_script(), introduced when the
    casting errors were fixed previously.

Mon Apr 23 06:27:47 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/*.c: Changed 0 to NULL.

Mon Apr 23 06:25:36 CDT 2001 Adam Heath <doogie@debian.org>

  * dpkg-deb/extract.c: More %z format fixes.

Mon Apr 23 05:31:03 CDT 2001 Adam Heath <doogie@debian.org>

  * split/info.c: Change format string, to handle size_t.

Mon Apr 23 04:45:23 CDT 2001 Adam Heath <doogie@debian.org>

  * main/main.c: s/--no-debsign/--no-debsig/ in help.

Mon Apr 23 03:21:10 CDT 2001 Adam Heath <doogie@debian.org>

  * dpkg-deb/{build,extract,main}.c, split/{info,join,main,queue}.c,
    split/dpkg-split.h, lib/{dump,ehandle,fields,mlib,parse{,help},varbuf,
    vercmp}.c, lib/parsedump.h, main/{archives,configure,enquiry,filesdb,
    help,main,packages,processarc,remove}.c, main/{filesdb,main}.h,
    utils/{md5sum, start-stop-daemon}.c, dselect/pkg{list.cc,list.hh,
    top.cc}, include/dpkg{-db.h,.h.in}: Fixed up several warning types.
    const, casting, incorrect sizes, signed/unsigned comparisons.

Mon Apr 23 02:17:26 CDT 2001 Adam Heath <doogie@debian.org>

  * dpkg-deb/info.c, main/processarc.c: Add comments telling why we
    use tempnam() and tmpnam().

Sun Apr 22 23:59:00 CDT 2001 Adam Heath <doogie@debian.org>

  * archtable: Added alphaev67-linux-gnu.

Sun Apr 22 19:02:12 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/parse.c: s/PARSE_MMAP/HAVE_MMAP/, so that we now use mmap
    to read status and available(and like files).

Sun Apr 22 18:32:02 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/parse.c: Fix another segfault when parsing single-paragraph
    files(ie, tmp.ci/control).

Sun Apr 22 17:13:17 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/filesdb.c: fix putat logic we broke earlier today

Sun Apr 22 16:42:22 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/filesdb.c: don't read a statoverride or .list file if they
    are 0 bytes

Sun Apr 22 15:15:56 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/help.c: ensure_package_clientdata() only needs to allocate memory
    for a perpackagestate struct, not a pkginfoperfile.

Sun Apr 22 02:46:06 CDT 2001 Adam Heath <doogie@debian.org>

  * dpkg-deb/build.c, dpkg-deb/extract.c, dpkg-deb/main.c, lib/mlib.c(*),
    lib/showcopyright.c, main/enquiry.c, main/main.c, split/main.c,
    split/split.c, utils/md5sum.c, utils/start-stop-daemon.c: Added
    macro NONRETURNING to several functions.

Sun Apr 22 02:02:34 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/filesdb: change initialization of putat in
    ensure_packagefiles_available() so gcc won't warn about possible
    uninitialized usage

Sun Apr 22 01:45:25 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * utils/start-stop-daemon.c: no longer use deprecated multi-line string
  * utils/md5sum.c: include stdlib.h to get declaration of exit

Sat Apr 21 18:00:31 CDT 2001 Adam Heath <doogie@debian.org>

  * main/main.c: reworked \\ parsing in commandfd.
  * lib/dbmodify.c: fix non-full initalizer.

Sun Apr 22 00:48:18 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/main.c: fixed some bizar pointer usage

Sun Apr 22 00:33:26 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * Makefile.conf.in: remove no longer used warning flags

Sat Apr 21 17:16:28 CDT 2001 Adam Heath <doogie@debian.org>

  * main/help.c, main/processarc.c, main/filesdb.c,  main/configure.c,
    main/archives.c, lib/parse.c: Fix int/pointer casting warnings.
  * include/dpkg.h.in, lib/mlib.c: Rewrote buffer_copy_setup, to avoid
    int/pointer casting warnings.  These means there are several
    variations of buffer_copy_setup.  Also, converted the desc parameter
    to const.

Sun Apr 22 00:09:58 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * optlib/long-options.c, lib/showcright.c: include stdlib.h to get
    declaration of exit

Sat Apr 21 17:10:32 CEST 2001 peter karlsson <peterk@debian.org>

  * po/sv.po, doc/sv/dpkg.8, doc/sv/start-stop-daemon.8:
    Updated Swedish translation.

Fri Apr 20 16:02:51 CDT 2001 Adam Heath <doogie@debian.org>

  * debian/changelog: Document stuff that was done in December.

Sat Apr 21 04:02:58 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/dpkg.8: remove Linux reference

Sat Apr 21 02:39:37 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-scanpackages.pl: fix typo in vercmp version cache
  * scripts/dpkg-shlibdeps.pl: remove statement that was basically
    a strange no-op
  * scripts/controllib.pl: give  syntax error for unexpected PGP signature
  * debian/changelog: updated

Fri Apr 20 19:46:38 CDT 2001 Adam Heath <doogie@debian.org>

  * po/pl.po: Remove spurious '%s' in Polish translation

Fri Apr 20 19:37:00 CDT 2001 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.pl: Import fix for broken dpkg-source.pl from
    1.8.3 version.

Fri Apr 20 19:05:44 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/dbmodify.c: Fix varbufprintf call in modstatdb_note(found when
    printf format warnings were enabled).

Fri Apr 20 19:02:46 CDT 2001 Adam Heath <doogie@debian.org>

  * configure.in: New option, --with-Werror, to convert all warnings
    into errors.

Fri Apr 20 18:21:45 CDT 2001 Adam Heath <doogie@debian.org>

  * automake/dpkg.m4, configure.in: Add support for gcc attributes,
    printfformat, etc.

Fri Apr 20 18:18:20 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/database.c: initialize otherpriority with 0, not an int.

Sat Apr 21 00:43:41 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * lib/parse.c: swap order for %.*s formats

Fri Apr 20 22:59:39 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * lib/database.c: initialize otherpriority as well in blankpackage()

Fri Apr 20 22:59:39 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * lib/ehandle.c: make sure we never overflow errmsgbuf

Fri Apr 20 14:59:14 CDT 2001 Adam Heath <doogie@debian.org>

  * main/main.c: Accidentally committed a debug fprintf stmt in the last ci.

Fri Apr 20 13:42:12 CDT 2001 Adam Heath <doogie@debian.org>

  * main/main.c: Disabled --command-fd, until further testing can be done.

Fri Apr 20 13:02:23 CDT 2001 Adam Heath <doogie@debian.org>

  * po/fr.po: Fix typo.
  * debian/changelog: Close additional bugs, from other already committed
    patches.

Thu Apr 19 15:18:05 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/cl-debian.pl: make regexps for Closes consistent again

Thu Apr 19 13:36:58 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * utils/install-info.{c,8}: merge patch from Ian Jackson to add a
    --retry option to start-stop-daemon

Thu Apr 19 00:14:39 CDT 2001 Adam Heath <doogie@debian.org>

  * main/enquiry.c: Errors during dpkg -s(and other similar commands) are
    now printed on stderr.

Thu Apr 19 00:03:16 CDT 2001 Adam Heath <doogie@debian.org>

  * main/archives.c:  Apply patch from Fumitoshi UKAI <ukai@debian.or.jp>,
    that escapes invalid characters in filenames(intl).

Wed Apr 18 23:53:40 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/database.c: In blankpackage, intialize ->installed and ->available.
    Found by me and Fumitoshi UKAI <ukai@debian.or.jp>.  This should help
    several segfaults that people have been seeing in dpkg.

Wed Apr 18 23:42:16 CDT 2001 Adam Heath <doogie@debian.org>

  * lib/mlib.c: If the buffer size is 0 in buffer_copy, then return, and
    do nothing.

Wed Apr 18 23:42:16 CDT 2001 Adam Heath <doogie@debian.org>

  * configure.in, debian/control: New upstream gettext.  Since we had
    to change our build, to comply with the new upstream, we also
    need to modify the build-depends.
  * po/dpkg.pot, po/nl.po: Fixed broken translations.

Wed Apr 18 18:01:21 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/install-info.{8,pl}: modify install-info to take relative
    filesnames, and add a --remove-exactly option to only remove exact
    matches (Rob Browning)

Sun Apr 15 22:42:11 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * config.sub, config.guess: updated
  * archtable: add hppa64-linux-gnu
  * po/ja.po: remove some translations that gettext can't handle on hppa

Thu Apr 12 13:12:16 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/it.po: installed new version from Lele Gaifax
  * dselect/main.cc: translate menu option as well in dme()

Wed Apr 11 12:19:25 CEST 2001 Wichert Akkerman <wakkerma@debian.org>

  * dselect.main.cc: retry getch if it fails with EINTR

Sun Mar 11 19:24:58 CET 2001 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated Swedish translation.

Sat Mar 10 15:59:39 CST 2001 Adam Heath <doogie@debian.org>

  * main/filesdb.c: Use a pure file descriptor, instead of a stream, to
    load the data, in ensure_packagefiles_available.

Sat Mar 10 01:33:15 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * main/main,h, main/main.c: add --no-debsig option using f_nodebsign
  * main/processarc: don't check signatures of f_nodebsign is set

Fri Mar  9 21:23:03 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * include/dpkg.h.in: add DEBSIGVERIFY
  * main/main.h, main/main.c: add bad-verify override

Fri Mar  9 19:30:22 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/controllib.pl: change outputclose to deal with comma-related
    syntax errors after processing substvars

Mon Mar  5 16:34:55 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * doc/fr/Makefile.in: add more files
  * doc/fr/dpkg.8,doc/fr/install-info.8,doc/fr/update-rc.d.8: updated
  * doc/fr/cleanup-info.8,doc/fr/dpkg-divert.8,doc/fr/dpkg-name.1,
    doc/fr/dpkg-scanpackages.8,doc/fr/dpkg-scansources.1,doc/fr/dpkg-source.1:
    added

Mon Mar  5 14:03:49 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: add more warning flags for gcc

Sun Mar 04 21:37:34 CET 2001 peter karlsson <peterk@debian.org>

  * po/sv.po, doc/sv/dpkg.8, doc/sv/822-date.1, doc/sv/start-stop-daemon.8:
    Updated Swedish translation.
  * main/dpkg.8, utils/start-stop-daemon.8: Fixed typos.

Fri Mar  2 17:29:02 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * The Copenhagen Commit
  * ChangeLog: undo file corruption (ugh)
  * utils/start-stop-daemon.8: fix typo
  * configure.in: use AC_C_INLINE instead of our own test
  * lib/nfmalloc, include/dpkg-db.h: remove HAVE_INLINE tests, use extern
    inline directly
  * lib/varbuf.c: add inline keyowrd to varbufaddc
  * optlib/Makefile.in: undo earlier patch and build libopt.a again
  * lib/Makefile.in: use libopt.a again, and a rule to build it
  * Makefile.in: build optlib before lib
  * Makefile.conf.in: add RANLIB
  * dselect/method.h, dselect/methlist.cc, dselect/method.cc,
    dselect/methparse.cc: rename struct option to dselect_option to prevent
    conflict with getopt.h
  * main/help.c: rework do_script a bit to compile without errors
  * scripts/dpkg-gencontrol.pl: add -n option to specify filename
  * scripts/dpkg-source.1:
    + document -n option for dpkg-gencontrol
    + fix confusing wording for dpkg-buildpackage -uc option
    + fix layout error for dpkg-distaddfile section
    + it's DEADJOE, not DEAD_JOE
  * scripts/dpkg-architecture.pl:
    + apply cleanup patch from Julian Gilbey
    + modify gcc regexp to recognize gcc versions like 2.96-ia64-000717
  * scripts/dpkg-checkbuilddeps.pl, scripts/dpkg-checkbuilddeps.1: new
    script from Joey Hess to check build dependencies
  * THANKS: Add Joey Hess
  * scripts/dpkg-parsechangelog.pl:
    + support reading changelog from stdin
    + remove Linux reference
  * scripts/dpkg-statoverride.pl: exit with exitcode 1 if we do --list but
    don't output anything, and use exitcode 2 if we try to remove a
    non-exiting override (unless --force is given).
  * scripts/dpkg-statoverride.8: document new exitcode for --list
  * main/main.c, main/dpkg.8: remove --smallmem and --largemem references
  * scripts/dpkg-buildpackage.sh: 
    + don't bother to specify architecture settings on commandlines since
      we put them in the environment already
    + remove debsign support, it's useless and debsign can't handle it
    + use DEB_BUILD_ARCH to get build architecture, not DEB_HOST_ARCH
    + remove Linux reference
  * scripts/dpkg-scanpackages.pl: mark last argument as optional in
    usage info
  * scripts/dpkg-scanpackages.8, scripts/dpkg-name.1, 
    scripts/dpkg-shlibdeps.pl, scripts/dpkg-source.pl, scripts/822-date.1,
    scripts/cl-debian.pl, scripts/cleanup-info.pl, scripts/dpkg-genchanges.pl,
    scripts/dpkg-distaddfile.pl, scripts/dpkg-source.1,
    scripts/dpkg-divert.pl, scripts/install-info.pl, scripts/install-info.8,
    scripts/dpkg-gencontrol.pl, scripts/update-alternatives.pl,
    scripts/update-rc.d.8: remove Linux references

Sun Feb 25 20:26:03 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * version-nr: update to 1.9.0

Sun Feb 25 19:17:53 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * debian/changelog: merged additions from v1.8 branch
  * scripts/controllib.pl: 
    + no need to have Origin in capit
    + consistently use &warn
    + fix -s to export all variables instead of just the first
  * scripts/dpkg-genchanges.pl: do not complain about missing packages
    if doing a source-only build
  * scripts/dpkg-buildpackage.sh: 
    + correct filename for secret keyring in gpg test
    + fix -C
    + skip signing pause of building unsigned packages
    + improve srcmsg
    + test for invalid signinterface
  
Sun Feb 25 19:10:33 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * doc/fr/dpkg.8, doc-fr/install-info.8, doc-fr/update-alternatives.8, 
    doc-fr/update-rc.d.8:  updated
  * doc/fr/dpkg-deb.1: added

Fri Feb 23 16:10:49 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/de.po: updated
  * po/fr.po: updated

Fri Feb 23 15:54:00 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * utils/start-stop-daemon.c: Add OpenBSD support
  * utils/md5sum.c: include unistd.h to things compile on OpenBSD
  * configure.in: test to see if we need to link to kvm

Fri Feb 23 10:22:02 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-divert.pl: fix typo in usage message
  * main/help.c: mangle argv[0] in do_script to always be the full path
  * include/dpkg-db.h: include string.h so things compile on ia64 
  * scripts/dpkg-architecture.pl: add ia64

Thu Feb 15 11:24:46 EST 2001 Ben Collins <bcollins@debian.org>

  * utils/Makefile.in: Do not use libopt.a, since libdpkg.a now includes those
    objects
  * optlib/Makefile.in: do not generate libopt.a
  * lib/Makefile.in: build libdpkg.a to include the objects from optlib
  * Makefile.conf.in: Add optlib to -I includes

Sat Feb  3 18:25:25 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * debian/rules: use POSIX glob instead of regexp

Sat Feb  3 18:18:42 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-source.1: fix description for dpkg-gencontrol
  * archtable: add entry for OpenBSD 2.8 for i386
  * scripts/dpkg-architecture.p: add openbsd-i386 entry

Sat Feb  3 18:12:18 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: check for ranlib
  * lib/Makefile.in: run ranlib on libdpkg.a

Fri Feb  2 14:27:47 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-statoverride.pl: use -e instead of -f to test
    for filesystem object existence
  * scripts/dpkg-source.pl: swap chdir and open in extracttar to
    prevent race with source-directory being removed while the
    sh/grep process is still running. Patch from Colin Watson

Thu Feb  1 18:22:05 EST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-source.pl: fix error in error message
  * utils/Makefile.in: set top_builddir
  * Makefile.in: spell version-nr correctly

Sun Jan 28 22:38:02 EST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-source.pl: modify how we handle the dscformat: we now
    assume all major versions are upwards and backwards compatibly. This
    allows us to add new fields without breaking older versions of 
    dpkg-source

Sun Jan 21 20:09:36 SGT 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-divert.pl: only allow absolute filenames
  * main/configure.c: add -N option to diff invocation

Mon Jan 15 07:27:10 CET 2001 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated Swedish translation.

Mon Jan 15 00:26:45 EST 2001 Ben Collins <bcollins@debian.org>

  * lib/nfmalloc.c: use obstack_copy/obstack_copy0 for nfstrsave and
    nfstrnsave respectively. Also, use an 8k chunk size for now. Should reduce
    some overhead, and be faster.

Sun Jan 14 23:37:30 EST 2001 Ben Collins <bcollins@debian.org>

  * include/dpkg-db.h: redeclare nfmalloc(), remove obstack definitions
  * lib/dbmodify.c (modstatdb_init): remove obstack init
  * lib/nfmalloc.c: redefine nfmalloc to be an inline function. It now checks
    to make sure db_obs is initliazed.
  * main/archives.c (tarobject): declare our own obstack, and use it instead
    (cu_fileslist) just call obstack_free
  * main/processarc.c: correct calling of cu_fileslist

Sun Jan 14 18:23:07 CST 2001 Adam Heath <doogie@debian.org>

  * main/dpkg.8: Document --command-fd.

Sun Jan 14 13:54:46 EST 2001 Ben Collins <bcollins@debian.org>

  * optlib/obstack.[ch]: New files for non GNU systems
  * optlib/Makefile.in (SOURCES): add obstack.c
  * lib/nfmalloc: remove nfmalloc()
  * include/dpkg-db.h: define obstack initializers, and define nfmalloc as a
    macro for obstack_alloc
  * lib/dbmodify.c (modstatdb_init): initialize obstack if it hasn't been already

Sun Jan 14 12:29:46 CST 2001 Adam Heath <doogie@debian.org>

  * lib/mlib.c, lib/fields.c, lib/parse.c, main/help.c, main/main.c,
    po/dpkg.pot: Fix -Wall messages.  Also, fix handling of user-defined
    fields in parsedb().

Sun Jan 14 02:46:14 CST 2001 Adam Heath <doogie@debian.org>

  * po/dpkg.pot: Bring up to date.

Sun Jan 14 02:37:05 CST 2001 Adam Heath <doogie@debian.org>

  * main/cleanup.c, main/help.c, main/processarc.c:  Removed duplicate
    code that was used to exec maintainer scripts, and moved it to a
    single function.  In the future, this single function could be used
    for tracking script execution.

Sun Jan 14 02:27:48 CST 2001 Adam Heath <doogie@debian.org>

  * main/main.h, main/main.c:  Change --{status,command}-pipe to
    --{status,command}-fd.

Sun Jan 14 02:19:18 CST 2001 Adam Heath <doogie@debian.org>

  * main/main.c, main/archives.c:  Add a --command-pipe.  This allows
    multiple commands to be passed to a single instance of dpkg, over
    the file descriptor passed on the cmdline.

Thu Jan 11 09:35:00 PST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-statoverride.pl: do chown before chmod so we don't
    loose setuid bits

Mon Jan  8 15:46:13 PST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-statoverride.{pl,8}: remove --import option now that
    suidmanager can convert everything

Mon Jan  8 15:12:21 PST 2001 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-source.pl: add vim swapfiles to the default ignore regexp

Mon Jan  8 10:38:28 PST 2001 Wichert Akkerman <wakkerma@debian.org>

  * po/fr.po: updated

Sun Jan  7 14:31:38 CST 2001 Adam Heath <doogie@debian.org>

  * lib/dbmodify.c: After N calls(which does a checkpoint()), reset
    the counter.

Sun Jan  7 14:27:57 CST 2001 Adam Heath <doogie@debian.org>

  * include/dpkg-db.h:  Forgot the status-pipe struct.

Fri Jan  5 22:36:24 CST 2001 Adam Heath <doogie@debian.org>

  * main/main.c, lib/dbmodify.c, main/dpkg.8: Add a --status-pipe.

Fri Jan  5 22:25:06 CST 2001 Adam Heath <doogie@debian.org>

  * lib/varbuf.c: varbuf(v)printf now return the number of characters
    they added to the buffer.

Thu Jan  4 01:20:27 CST 2001 Adam Heath <doogie@debian.org>

  * dpkg-deb/build.c, dpkg-deb/extract.c, dpkg-deb/info.c,
    include/dpkg.h.in, lib/mlib.c, main/archives.c, main/enquiry.c,
    main/help.c main/processarc.c: Add 'warn' parameter to waitsubproc
    and checksubprocerr, and also add a return value.  This fixes my
    last checkin, where maintainer_script_alternative would run
    both the old and new script.

Thu Jan 04 05:19:37 CET 2001 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated Swedish translation.

Wed Jan  3 10:35:49 CET 2001 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: add doc/fr/Makefile

Tue Jan  2 22:44:14 CST 2001 Adam Heath <doogie@debian.org>

  * lib/help.c: Removed an 'inlined' version of waitsubproc, and call
    the function instead.

Mon Jan  1 02:07:47 CST 2001 Adam Heath <doogie@debian.org>

  * lib/varbuf.c, include/dpkg-db.h: Add varbufdupc().

Mon Jan  1 02:04:26 CST 2001 Adam Heath <doogie@debian.org>

  * lib/parse.c: Use of PKGIOFF macro was checked in prematurely.

Sat Dec 30 23:08:00 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * doc/Makefile.in: add fr to SUBDIRS
  * doc/fr: new directory with French manpages
  * THANKS: add philippe batailler who translated the manpages to French

Sat Dec 30 20:38:20 CST 2000 Adam Heath <doogie@debian.org>
  
  * utils/start-stop-daemon.c: --name is now allowed on the command
    line.

Fri Dec 29 12:39:09 CST 2000 Adam Heath <doogie@debian.org>

  * lib/parse.c: Properly parse control files that only have one
    paragraph, which means no double ending new line.

Thu Dec 28 18:43:37 CST 2000 Adam Heath <doogie@debian.org>

  * lib/database.c: Fix minor memleak in used function hashreport.
    Thanks to Adrian Bridgett <bridgett@debian.org>.

Wed Dec 27 14:54:55 CST 2000 Adam Heath <doogie@debian.org>

  * lib/parse.c:  Removed use of getc(), and instead use pointers
    into a gigantic memory buffer(either thru mmap, or by copying
    into a large buffer(#define PARSE_MMAP)).  Nice little speedup,
    and also had the added benefit of removing varbuf* code from
    parsedb().

Wed Dec 27 04:58:22 CST 2000 Adam Heath <doogie@debian.org>

  * lib/fields.c: Removed use of varbuf* code from f_dependency(),
    for a speedup.

Wed Dec 27 04:55:14 CST 2000 Adam Heath <doogie@debian.org>

  * lib/fields.c: Detect and issue an error when a space is in a
    version.

Wed Dec 27 04:00:32 CST 2000 Adam Heath <doogie@debian.org>

  * lib/nfmalloc.c, include/dpkg-db.h: Added nfstrnsave().

Tue Dec 26 17:07:11 CST 2000 Adam Heath <doogie@debian.org>

  * lib/md5.c, lib/md5.h: Oops, forgot to add these files.

Tue Dec 26 08:28:17 CST 2000 Adam Heath <doogie@debian.org>

  * main/main.c: Removed extraneous debug prints, that displayed the
    state of all force options.  Doh!

Tue Dec 26 04:34:02 CST 2000 Adam Heath <doogie@debian.org>

  * lib/fields.c, lib/parsehelp.c, include/dpkg-db.h: Increased the
    speed of convert_string() by a factor of 2, by storing the length
    of each string inside the struct(this function is used to convert
    strings into integer values).

Tue Dec 26 03:43:17 CST 2000 Adam Heath <doogie@debian.org>

  * acconfig.h, config.h.bot, configure.in, main/filesdb.c,
    automake/sysinfo.m4(removed): Removed all references to
    sysinfo().

Tue Dec 26 03:24:38 CST 2000 Adam Heath <doogie@debian.org>

  * main/main.c, main/files.c: Removed --smallmem code.

Mon Dec 25 00:46:47 CST 2000 Adam Heath <doogie@debian.org>

  * utils/md5sum.c: Don't use FILE * in mdfile.

Mon Dec 25 00:31:05 CST 2000 Adam Heath <doogie@debian.org>

  * include/dpkg.h.in, lib/mlib.c: Added generic setup code to buffer
    copy loop.

Sun Dec 24 23:48:45 CST 2000 Adam Heath <doogie@debian.org>

  * include/dpkg.h.in, lib/Makefile.in, lib/mlib.c, utils/Makefile.in,
    utils/md5sum.c: Moved md5 code into generic buffer_copy loop.

Sun Dec 24 13:59:36 CST 2000 Adam Heath <doogie@debian.org>

  * Use DESTDIR when installing /etc/dpkg/origins/dpkg

Sun Dec 24 17:35:12 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * dselect/main.cc: make commandline options work again
  * Makefile.conf.in, configure.in,automake/dpkg.m4: revert changes from Adam
  * Makefile.conf.in: add @CWARNS@ to CFLAGS
  * configure.in: add AC_SUBST for CWARNS

Sun Dec 24 17:05:45 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-genchanges.pl: output descriptions for udebs as well

Sun Dec 24 06:31:55 CST 2000 Adam Heath <doogie@debian.org>

  * scripts/dpkg-name.sh: Add -k|--symlink option.

Sun Dec 24 05:58:48 CST 2000 Adam Heath <doogie@debian.org>

  * dselect/main.cc: Made the accelerator keys in dselect's main
    menu separate options, so that they can be translated separately.

Sun Dec 24 05:31:27 CST 2000 Adam Heath <doogie@debian.org>

  * debian/control: Added depends on sysvinit (>= 2.72), so that we
    can make sure that /etc/rcS.d exists.

Sun Dec 24 05:24:23 CST 2000 Adam Heath <doogie@debian.org>

  * scripts/update-rc.d: Changed documentation and help, as -f only
    applies during remove.

Sun Dec 24 05:10:29 CST 2000 Adam Heath <doogie@debian.org>

  * main/main.c: Added a --force-all option.

Sun Dec 24 04:32:34 CST 2000 Adam Heath <doogie@debian.org>

  * main/main.c: Format help string for --abort-after like other
    option help strings.

Sun Dec 24 02:38:38 CST 2000 Adam Heath <doogie@debian.org>

  * methods/disk.install, methods/disk.setup, methods/disk.update,
    methods/floppy.install, methods/floppy.update, methods/hd.setup,
    methods/hd.unpack, methods/hd.update: Fix to pass on admindir
    from dselect to dpkg.

Sun Dec 24 01:00:59 CST 2000 Adam Heath <doogie@debian.org>

  * scripts/dpkg-source.pl: Minor tweak so that when patch 2.5.4 is
    manually used to apply a diff, it doesn't get applied multiple
    times.

Sat Dec 23 23:28:52 CST 2000 Adam Heath <doogie@debian.org>

  * utils/start-stop-daemon.c: Add --nicelevel, to alter a
    programs priority before starting.

Sat Dec 23 22:56:16 CST 2000 Adam Heath <doogie@debian.org>

  * main/dpkg.8: Document that --largemem is the default, and that
    the test point is 24 megs.

Sat Dec 23 22:53:23 CST 2000 Adam Heath <doogie@debian.org>

  * main/dpkg.8: Document that --set-selections does not actually
    install any packages.

Sat Dec 23 22:41:47 CST 2000 Adam Heath <doogie@debian.org>

  * dpkg-deb/dpkg-deb.1: Fix typo.

Sat Dec 23 22:24:23 CST 2000 Adam Heath <doogie@debian.org>

  * scripts/dpkg-divert.pl: Add --truename option.

Sat Dec 23 21:40:32 CST 2000 Adam Heath <doogie@debian.org>

  * main/dpkg.8:  Document COLUMNS environment variable.

Sat Dec 23 21:20:43 CST 2000 Adam Heath <doogie@debian.org>

  * dpkg-deb/extract.c, include/dpkg.h.in, lib/mlib.c,
    main/enquiry.c, main/filesdb.c, main/packages.c, main/remove.c,
    utils/start-stop-daemon.c: Clean up a few gcc warnings.  Note,
    that the warning:
      "deprecated conversion from string constant to `char *'"
    is actually a bug in ncurses-dev(which has been filed as 80410)
    not setting the fmt argument as const.

Sat Dec 23 19:33:05 CST 2000 Adam Heath <doogie@debian.org>

  * automake/dpkg.m4, configure.in, Makefile.conf.in:
    Modified DPKG_C_GCC_TRY_WARNS() to call AC_SUBST, so that we can
    use the result of the test during build time.

Sat Dec 23 16:44:25 CST 2000 Adam Heath <doogie@debian.org>

  * main/depcon.c: Added description for "suggests" in describedepcon().

Sat Dec 23 16:24:31 CST 2000 Adam Heath <doogie@debian.org>

  * debian/dpkg.postinst: Remove bashism.

Sat Dec 23 03:06:19 CST 2000 Adam Heath <doogie@debian.org>

  * scripts/cl-debian.pl: Make '#' optional in Closes: tags.

Sat Dec 23 02:11:27 CST 2000 Adam Heath <doogie@debian.org>

  * scripts/dpkg-buildpackage.sh: Add -t to -h output.

Fri Dec 22 12:35:43 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/update-alternatives.8: use FHS instead of FSSTND

Thu Dec 21 19:30:56 CET 2000 peter karlsson <peterk@debian.org>

  * po/sv.po, doc/sv/dpkg.8: The "Even Merrier Christmas" update of the
    Swedish translation.

Thu Dec 21 03:41:56 CST 2000 Adam Heath <doogie@debian.org>

  * debian/changelog: Closes bug 49581, because we don't use
    external gzip anymore.

Thu Dec 21 03:35:56 CST 2000 Adam Heath <doogie@debian.org>

  * main/enquiry.c: s/--cmpversions/--compare-versions/

Thu Dec 21 03:29:04 CST 2000 Adam Heath <doogie@debian.org>

  * main/dpkg.8: Remove duplicate -R(it doesn't set --root).

Thu Dec 21 03:24:38 CST 2000 Adam Heath <doogie@debian.org>

  * archtable: Add armv3l.

Thu Dec 21 01:40:02 CST 2000 Adam Heath <doogie@debian.org>

  * lib/mlib.c, include/dpkg.h.in: Switch all size parameters to
    ssize_t.  Also, return totalread, not bytesread, in buffer_copy.

Thu Dec 21 01:22:22 CST 2000 Adam Heath <doogie@debian.org>

  * lib/mlib.c: Handle EINTR on reading and writting in buffer_copy.

Thu Dec 21 06:58:21 CET 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: The "Merry Christmas" update of the Swedish translation.

Wed Dec 20 12:50:55 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * main/processarc.c: revert change from Adam: reading the trailing
    zeroes is essential, not reading them can give us a SIGPIPE
    on extracting.

Wed Dec 20 02:41:39 CST 2000 Adam Heath <doogie@debian.org>

  * dpkg-deb/build.c, dpkg-deb/extract.c, dpkg-deb/info.c,
    include/dpkg-db.h, lib/myopt.c, lib/parse.c, lib/varbuf.c,
    lib/vercmp.c, main/archives.c, main/enquiry.c, main/filesdb.c,
    main/processarc.c, po/dpkg.pot: Fix -Wall messages.

Wed Dec 20 02:21:43 CST 2000 Adam Heath <doogie@debian.org>

  * include/dpkg.h.in: Make {stream,fd}_null_copy use [lf]seek, and fall
    back on the buffer code, if stream/fd refer to a pipe.

Wed Dec 20 02:17:56 CST 2000 Adam Heath <doogie@debian.org>

  * configure.in, Makefile.conf.in: Move -D_GNU_SOURCE from configure.in
    to Makefile, and from CFLAGS to DEFS.  This macro was getting lost
    if someone was setting CFLAGS on the cmdline.  Perhaps this should
    be moved into config.h.in?

Wed Dec 20 01:39:30 CST 2000 Adam Heath <doogie@debian.org>

  * main/processarc.c: Don't copy trailing zeros from dpkg-deb
    pipe.
  * main/archives.c: Fix some i8ln.
  * dpkg-deb/extract.c: Remove skipmember(), and use the buffer
    copy code.

Wed Dec 20 01:31:28 CST 2000 Adam Heath <doogie@debian.org>

  * lib/nfmalloc.c, lib/parsehelp.c: Lesson the memory footprint.

Wed Dec 20 01:11:13 CST 2000 Adam Heath <doogie@debian.org>

  * dpkg-deb/build.c: Fix building of debs, when there is no given
    compression on the cmdline.

Wed Dec 20 01:55:59 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-architecture.pl: fix typo / syntax error

Mon Dec 18 07:37:10 CET 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated Swedish translation.

Sun Dec 17 13:34:06 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * debian/control: fix typo in Build-Depends and add zlib1g-dev
  * More Adam stuff:
    + lib/mlib.c, include/dpkg.h.in: make do_fd_copy even more modular
    + dpkg-deb/{build.c,extract.c,info.c}, lib/showcright.c,
      main/{enquiry.c,filesdb.c}: updated for new do_fd_copy routines
    + main/{archives,[ch],main/processarc.c}: use fds instead of streams
      so we don't mix fd and stream-based IO which can cause havoc

Wed Dec 13 16:48:47 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * main/archives.c: create files, fifos, devices and directories with mode 0
    too close a small window when they are readable before we apply the correct
    permissions.
  * main/archives.c: newtarobject_allmodes() updated to handle statoverrides
  * main/dpkg.8: grammar fix

Tue Dec 12 16:27:59 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-statoverride.pl: fix warning when trying to remove a
    non-existing override.

Mon Dec 11 01:10:19 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * debian/control: add gettext to the build-depends

Sun Dec 10 00:10:27 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * lib/mlib.c: remove no longer used struct
  * lib/mlib.c: return number of bytes read in do_fd_read
  * main/enquiry.c: one more place where we cah use read_fd_vbuf

Sat Dec 09 12:21:35 CET 2000 peter karlsson <peterk@debian.org>

  * po/sv.po, doc/sv/deb.5, doc/sv/deb-old.5, doc/sv/dpkg.8:
    Updated Swedish translation.
  * doc/sv/start-stop-daemon.8: Fixed a typo.

Sat Dec  9 01:51:51 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * archtable, scripts/dpkg-architecture.pl: add linux s/390
  * Makefile.conf.in, configure.in: add new option to use libz
  * dpkg-deb/Makefile.in, dpkg-deb/build.c, dpkg-deb/extract.c: use libz
    if so desired
  * debian/rules: default to using static libz
  * include/{dpkg-db.h,dpkg.h.in}, lib/mlib.c, lib/varbuf.c: generalize 
    fd copy loops
  * main/filesdb.c: udpates to use read_fd_buf

Tue Dec 05 07:43:05 CET 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated Swedish translation.

Mon Dec  4 14:42:01 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-statoverride.pl, main/filesdb.c: merge patch from
    Robert Luberda <robert@pingu.ii.uj.edu.pl> to fix statoverrides
    using numerical [ug]ids
  * Merge updats from the v17 branch:
    + scripts/dpkg-buildpackage.sh: Quote test options for usepause
    + scripts/dpkg-shlibdeps.pl: resolve library paths using a combination
      of the libc major version, and ldconfig -p output. Solves problems
      with errant libc5 deps.
    + scripts/dpkg-shlibdeps.pl: Make it parse soname's in the format of
      "libfoo-X.X.so" (e.g. libdb-3.1.so) and use it. Also make it give a
      warning if there is a NEEDED line in the objdump output that we cannot
      grok.
    + scripts/update-rc.d.pl: fix typo in regexp for scripts
    + debian/rules: remove final occurrence of emacs

Mon Dec  4 01:34:57 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * Merge more of Adams handywork to bring dpkg up to speed (literally :)
    + include/dpkg.h.in: remove defines for cat and dpkg-safelist since they
      are no longer used
    + lib/mlib.c: split up do_fd_copy
    + lib/varbuf.c: add varbufvprintf
    + lib/parse.c: use memset to initialize fieldencountered
    + main/filesdb.c: use new read_fd_into_buf

Sun Dec  3 22:11:22 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * dpkg-deb/extract.c: apply one of Adams do_fd_copy patches

Thu Nov 30 02:45:42 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-statoverride.{pl,8}: 
    + add new --import option to import settings from /etc/suid.conf
    + fix ENOENT issues
    + use %owner consistently instead of %owner and %user

Wed Nov 29 17:56:43 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * po/gl.po: updated

Tue Nov 28 18:48:52 CET 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Terminology changes

Sat Nov 25 22:05:19 CET 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated Swedish translation

Fri Nov 24 16:49:26 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-scansources.pl: Fix getopt usage since perl5.6 complains
    about it.
  * doc/deb-old.5,doc/deb.5,main/dpkg.8,scripts/dpkg-name.1,
    split/dpkg-split.8 : update to reflect that dpkg-deb is in section 1

Thu Nov 23 19:13:21 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * lib/myopt.c: properly chomp read lines

Thu Nov 23 17:52:44 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * lib/fields.c, lib/dump.c: fix two memory leaks
  * More Adam Heath patches:
    + lib/mlib.c, include/dpkg.h.in: add new option for do_fd_copy to
      specify buffersize
    + dpkg-deb/build.c, lib/info.c, lib/showcright.c: update for new
      do_fd_copy
    + dpkg-deb/extract.c: use do_fd_copy to read data instead of reading
      per character.
  * lib/mlib.c: fix error reporting for reading data in do_fd_copy
  * optlib/Makefile.am: remove (can't believe this still existed!)
  * utils/Makefile.in: link md5sum with our own libintl if needed
  * archtable, scripts/dpkg-architecture.pl: add freebsd-i386
  * acconfig.h, configure.in, doc/Makefile.in: make building documentation
    and start-stop-daemon optional
  * main/help.c: only check for start-stop-daemon in checkpatch() if we
    build it

Thu Nov 23 15:48:53 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-buildpackage.sh: Name .changes file properly if
    we are doing a source-only build

Thu Nov  9 13:53:21 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * doc/Makefile.in: use internals.html/index.html as dependency target
    so we only rebuild the docs when really needed

Wed Nov  8 14:55:48 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * Makefile.conf, debian/rules: no longer install any emacs support stuff
  * debian/50dpkg-dev.el, scripts/debian-changelog-mode.el: removed
  * archtable: add powerpc-linux-gnu entry
  * debian/dpkg.conffiles: sync with dpkg-17 tree

Tue Nov  7 22:05:48 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * lib/myopt.c: chop read lines in myfileopt

Tue Nov  7 00:45:00 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-statoverride.8: fix typos
  * scripts/dpkg-statoverride.pl:
    + replace dpkglibdir with admindir (oops)
    + open new file for writing in WriteOverrides
  * scripts/update-alternatives.pl: handle the fact that the Makefile
    changes our $admindir assignment so we have to manually add
    "/alternatives" to the path

Mon Nov 06 07:24:11 CET 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated.

Sun Nov  5 16:28:26 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * debian/dpkg.conffiles: added missing file
  * debian/rules, main/main.c: rename dpkg configfile to dpkg.cfg
  * debian/rules, debian/origin: add new origin file
  * scripts/dpkg-gencontrol.pl: rename Bugs-Submit-To to Bugs
  * debian/control: add Bugs and Origin entries
  * lib/database.c, parse.c: add Origin and Bugs to fieldinfos table
  * include/dpkg-db.h: add Origin and Bugs to pkginfoperfile struct
  * dpkg-deb/main.c, dpkg-deb/dpkg-deb.h: fix type for compression
  * Makefile.in: install origin file
  * scripts/dpkg-buildpackage.sh: fix logic error in source-only building
  * scripts/dpkg-source.pl: handle Bugs and Origin tags

Sun Nov  5 10:00:31 EST 2000 Ben Collins <bcollins@debian.org>

  * Create branch point for versioned provides
  * Revert patches for it from the HEAD

Sun Oct 29 23:33:48 CET 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: some corrections

Sun Oct 29 01:47:59 CEST 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: translated readfail message parameters from extract.c

Sat Oct 28 15:41:04 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-genchanges.pl: make a missing package a warning instead
    of an error
  * dpkg-deb/extract.c: mark readfail message parameters as translateable

Wed Oct 25 00:14:06 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * po/nl.po: new Dutch translation from Ivo Timmermans
  * THANKS: add Ivo
  * configure.in: add nl to linguas

Thu Oct 19 00:59:40 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * utils/start-stop-daemon.c
    + fix a buffer overflow in cmdname handling
    + Only abort if we fail to open an existing pidfile
  * utils/start-stop-daemon.8: update formating 

Wed Oct 18 17:48:15 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-source.pl: patch from Colin Watson to not rename a
    file to itself

Mon Oct 16 10:45:47 EDT 2000 Ben Collins <bcollins@debian.org>

  * main/packages.c: Hack up things so a package which
    provides/conflicts/replaces it's own virtual can be installed (can't
    be removed yet, but hey...)

Sat Oct  7 22:18:43 CEST 2000 Wichert Akkerman <wakkerma@debian.org> 

  * po/gl.po, configure.in: add new Galician translation from  Alberto Garcia
  * po/pt_BR.po, configure.in: add new Brazilian translation from
    Carlos Laviola
  * THANKS: add Alberto and Carlos

Wed Oct  4 16:37:08 CEST 2000 Wichert Akkerman <wakkerma@debian.org> 

  * main/processarc.c: read trailing zeroes from tar output

Tue Oct 03 23:13:59 CEST 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated Swedish translation.

Sun Oct  1 20:09:42 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * main/enquiry.c: fix the listpackage output logic
  * main/filesdb.c: fix error cleanup in ensure_statoverride
  * lib/myopt.[ch]: add myoptfile() so we can read configuration files
  * main/main.c: call new myoptfile()
  * include/Makefile.in, include/dpkg.h.in: add dpkgconfdir

Mon Sep 25 16:19:05 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-divert.pl: don't print version twice on --help

Thu Sep 21 16:29:32 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * debian/shlibs-default.template: removed
  * debian/shlibs-{default,override}: new files
  * debian/rules: install shlibs-{default,override} in /etc/dpkg in dpkg-dev
  * scripts/{dpkg-buildpackage.sh,dpkg-genchanges.pl}: add -S option to only
    upload sources
  * scripts/dpkg-source.1: document new -S option

Sun Sep 17 01:50:34 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-source.1: document -k option for dpkg-buildpackage

Sat Sep 16 22:55:49 CEST 2000 peter karlsson <peterk@debian.org>

 * doc/sv/822-date.1, doc/sv/dpkg-split.8: Initial Swedish translation.
 * doc/sv/Makefile.in: Added more Swedish manual pages to install.
 * po/sv.po: Fixes and updates.

Fri Sep 15 23:45:21 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * THANKS: update email address for dhd
  * merge hppa fixed from dhd:
    + archtable: add hppa, fixup SuperH entries
    + scripts/dpkg-architecture.pl: add hppa
    + config.sub, config.guess: updated to support hppa
    + main/enquiry.c: fix printarch()

Fri Sep 15 08:00:44 CEST 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Some consistency changes for the translation.
  * doc/sv/deb.5, doc/sv/dpkg.8, doc/sv/dselect.8: Translation fixes.

Thu Sep 14 22:31:15 CEST 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated Swedish translation.
  * doc/sv/deb-control.5, doc/sv/deb-old.5, doc/sv/dpkg.8, doc/sv/md5sum.1,
    doc/sv/start-stop-daemon.8: Initial Swedish translation.
  * doc/sv/Makefile.in: Added more Swedish manual pages to install.

Sun Sep 10 23:31:02 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-scanpackages.pl: modify to use most recent version
    of a package if multiple versions are found

Sat Sep  9 21:17:37 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * debian/control: add dependency on binutils for dpkg-dev (needed for
    objdump)
  * scripts/dpkg-shlibdeps.pl: really make it do what the documentation
    says it does.
  * scripts/update-alternatives.pl:
    + set alternative to manual mode when doing --config
    + Fix typo in test for removed manual alternative
    + Merge patch from Camm Maguire to fix updating of slave links

Fri Sep  8 12:28:34 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: add de to ALL_LINGUAS
  * po/de.po: New German translation from Hartmut Koptein
  * THANKS: Add Hartmut 
  * main/enquiry.c: fix silly type error
  * scripts/dpkg-divert.pl: change $dpkglibdir to $admindir
  * scripts/Makefile.in: set $admindir as well in scripts

Tue Sep  5 20:28:17 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-source.1: note that dpkg-shlibdeps uses objdump now

Sat Sep  2 18:29:56 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * archtable, scripts/dpkg-architecture.pl: add entries for SuperH

Wed Aug 30 14:24:53 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * main/enquiry.c: modify listformatstring() to check if output is
    being sent to a tty. If not and no COLUMNS is set use a width of 80

Mon Aug 21 12:58:15 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * lib/lock.c, main/filesdb.c, main/archives.c, main/configure.c,
     dpkg-deb/build.c, dpkg-deb/extract.c: updates from Chip Salzenberg
     to clean up fd handling

Thu Aug 10 21:08:00 CEST 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: More corrections and translation updates.

Mon Aug  7 12:02:16 PDT 2000 Wichert Akkerman <wakkerma@debian.org>

  * main/enquiry.c: cache value of packagelist formatstring instead
    of recreating it for every package

Tue Aug  1 10:56:52 EDT 2000 Ben Collins <bcollins@debian.org>

  * main/packages.c: fix thinko with versioned deps
  * debian/rules:clean: remove distclean call, we purge the whole build
    directory anyway.
  * main/main.c: add --assert-versioned-provides option
    main/main.h: prototype it
    main/enquiry.c: add assertverprov()

Mon Jul 31 23:38:56 EDT 2000 Ben Collins <bcollins@debian.org>

  * archtable: add ia64; revert sparc64 so that it turns into sparc. There
    wont be a full binary-sparc64 port.
  * dselect/main.cc: small fixups to get it to compile with gcc-2.96

Wed Jul 26 21:27:30 CEST 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated translation.

Sun Jul 23 15:23:15 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * main/enquiry.c: mark another string as translateable

Sun Jul 16 12:43:59 EDT 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-gencontrol.pl: add Origin, Submit-Bugs-To and
    Submit-Bugs-Style fields.
  * scripts/dpkg-source.1: slight formatting update
  * debian/copyright: merge two entries for Miquel van Smoorenburg

Sat Jul 15 14:55:00 CEST 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: More corrections.

Thu Jul 13 10:22:43 EDT 2000 Wichert Akkerman <wakkerma@debian.org>

  * lib/fields.c: make a non-exact versioned provides a warning instead
    of an error

Tue Jul  4 17:29:06 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * main/enquiry.c: modify getttywidth() to check COLUMNS environment
  * scripts/controllib.pl: remove warnings for LOGNAME stuff

Wed Jun 28 19:50:00 CEST 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated Swedish translation from comments received.

Wed Jun 28 00:04:40 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

 * lib/showcright.c: don't translate function-name in do_fd_copy call

Tue Jun 27 19:19:00 CEST 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated Swedish translation from comments received.

Sat Jun 17 21:57:00 CEST 2000 peter karlsson <peterk@debian.org>

  * po/sv.po: Updated Swedish translation.
  * THANKS: Updated my e-mail address.

Fri Jun 16 08:59:47 EDT 2000 Ben Collins <bcollins@debian.org>

  * main/depcon.c: really fixup versioned provides this time. basically we
    ignore the dvr_* of the provide, and use the version to decide if we
    want to use it to satisfy the dep
  * main/enquiry.c: ignore dvr_* type when checking for provides

Thu Jun 15 13:41:28 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * lib/parse.c: add Enhances to fieldinfos[]
  * lib/fields.c:
    + initialize dop->backrev as well when creating new dependency
    + only allow exact version relations when dealing with provides
  * TODO: remove versioned provides
  * debian/rules: don't fail if make clean fails (which happens on a
    cvsclean tree)

Thu Jun 15 10:09:03 EDT 2000 Ben Collins <bcollins@debian.org>

  * main/depcon.c: remove if() that prevented versioned deps from checking
    provides to satisfy them
  * dselect/pkgsublist.cc: Same

Tue Jun 13 22:11:22 CEST 2000 peter karlsson <peter@softwolves.pp.se>

  * po/sv.po: Updated Swedish translation

Tue Jun 13 19:23:37 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-statoverride.pl: 
    + fix two typos in the help message
    + Add code to implement --update when adding an override
  * scripts/dpkg-statoverride.8: new file
  * debian/dpkg.postinst: create statoverride file if it doesn't exist

Mon Jun 12 19:38:17 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-statoverride.pl: fix two typos in the help message
  * debian/dpkg.postinst: create statoverride file if it doesn't exist

Mon Jun 12 16:35:26 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: generate doc/sv/Makefile as well
  * main/filesdb.c: fix logic when reading statusoverride-file
  * scripts/.cvsignore: add all the perl scripts
  * scripts/dpkg-divert.pl:
    + turn $admindir into $dpkglibdir, which the Makefile will handle
    + fix glob->regexp logic for --list
  * scripts/Makefile.in: 
    + replace one `sed' with `$(SED)'
    + add dpkg-statoverride
  * scripts/dpkg-statoverride.pl: new util to manage statoverrides
  * debian/rules: move Swedish manpages into the package as well

Fri Jun  9 15:52:28 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * Merge things from the potato branch:
    + po/*.po: updated
    + THANKS: Add Lele Gaifax
    + configure.in: add Italian to LINGUAS
    + doc/sv: new directory with Swedish manpages
    + doc/*: removed "GNU/Linux" since this runs on HURD as well
    + doc/ja/update-alternatives.8: new version
    + dpkg-deb/main.c: remove preprocessor define from gettextized string
    + dselect/main.c: remove preprocessor define from gettextized string
    + lib/showcright.c: remove preprocessor define from gettextized string
    + main/enquiry.c: can't use prepocessor defines in a gettextized string
    + dselect/pkgdisplay.cc: Replace empty string for eflags with a space
    + dselect/pkgsublist.cc: mark another string as translateable
    + dselect/pkgtop.cc: change code to reflect that the empty case for
      an eflagstring is now a single space, not an empty string (since
      gettext can't handle empty strings).
    + main/help.c: allocate a bit more space for the path buffer in checkpath()
    + main/main.c: fix location of --abort-after in --help output
    + scripts/debian-changelog-mode.el: fix documentation string for
      debian-changelog-finalise-last
    + scripts/dpkg-source.pl: fix typo
    + scripts/udate-alternatives.8: fixed errors found while Japanese
      translation was made. 
  * methods/Makefile.am: removed
  
Sun May 28 17:24:09 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * dpkg-deb/build.c: remove extra closing brace
  * include/dpkg.h.in: add define for statusoveride file
  * main/filedb.[ch]: add code to manage the statoverride list
  * main/archives.c: modify tarobject() to check for statoverrides
  * TODO: remove integrating suidmanager note, it's partially done now
    
Sun Apr 30 14:19:41 CEST 2000 Wichert Akkerman <wakkerma@debian.org>

  * doc/*: remove all references to GNU/Linux and just mention `Debian
    system': we just as well on other operating systems.
  * scripts/dpkg-source.pl: add Format-field to .dsc files
  * debian/changelog: include changes from 1.6.12.99

Sat Apr 15 14:53:23 EDT 2000 Wichert Akkerman <wakkerma@debian.org>

  * TODO: updated
  * debian/rules: explicitly strip the setgid bit for debian/tmp-*.
    This is needed since the kernel copies it when we create subdirs
    and install doesn't strip it even though we explicitly ask for
    a mode 755 directory. Updated clean target to run make distclean
    to remove generated sourcefiles as well.
  * dpkg-deb/build.c: add comments to describe what we are doing.
    Add code to get a list of files to be added to the archive, reorder
    it and feed it to tar and use this to put symlinks after all other
    files.
  * scripts/dpkg-gencontrol.pl: add dpkg:Version and dpkg:UpstreamVersion
    to list of substvars

Thu Apr 13 09:57:52 EDT 2000 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: add -D_GNU_SOURCE to CFLAGS so we can get strsignal
  * scripts/dpkg-genchanges.pl: output Changed-By just after Maintainer
  * scripts/cl-debian.pl: really allow a single whitespace to between # and
    a bugnumber that will be closed.
  * Synchronize with potato-branch again:
    + scripts/dpkg-divert.pl: fixed typo
    + debian/dpkg-dev.{postinst,prerm}: remove emacsen-common stuff
    + po/{es,sv}.po: updated
    + debian/changelog: include changes for 1.6.12
    + dpkg-genchanges: recognize non-deb packages (tarballs, such as
      dpkg-non-deb and boot-floppies disk tarballs). This makes sure that we
      include them when figuring up the Arch field in the .changes
    + scripts/dpkg-buildpackage.sh: Don't default to no signing until
      after we parsed the options, otherwise we will miss overrides.

Wed Apr 12 19:06:27 EDT 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-genchanges.pl: add dpkg:Version and dpkg:UpstreamVersion
    to list of substvars

Sat Mar 18 19:08:20 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * Synchronize with potato-branch again:
    + scripts/dpkg-buildpackage: improve test for default signcommand
    + po/ja.po: updated
    + dselect/*.cc: remove includes for signal.h and curses.h
    + dselect/dselect.h: include both signal.h and curses.h and #undef
      the ERR from sys/ucontext.h which breaks curses
    + scripts/dpkg-divert.pl: fix syntax error
 
Sat Mar  4 16:52:38 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * Synchronize with potato-branch again:
    + debian/changelog: update to 1.6.10
    + scripts/dpkg-divert.pl: reinstate last writeability-patch. Modified
      to not abort on ENOENT: this indicates a directory does not (yet)
      exist. If this happens don't try to rename.
    + scripts/update-alternatives.pl:
      + update usage-warning to reflect the new --config option
      + Document some global variables
      + Switch back to auto-mode when removing a manually selected alternative
    + dselect/{dselect.h,main.cc,pkglist.cc}: remove CAN_RESIZE stuff
    + dselect/methlist.cc: don't abort if getch fails due to interrupted syscall
    + dselect/pkglist.cc: don't abort if getch fails due to interrupted syscall
    + dselect/baselist.cc: put debug-statement in sigwinchhandler and
      actually resize the current terminal before redisplaying the screen

Thu Mar  2 17:03:04 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * dselect/methkeys.cc: remove old bindings for `n' and `p', which
    frees `n' to do searchagain

Mon Feb 28 15:12:05 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * utils/Makefile.in: fix link command for start-stop-daemon

Mon Feb 21 18:05:55 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * dselect/pkgsublist.cc: mark another string as translateable

Thu Feb 17 22:01:38 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * doc/ja/dselect.8: Updated

Wed Feb 16 17:13:09 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * dselect/pkgtop.cc: flag two more strings as translateable

Tue Feb 15 19:57:45 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * Merge the potato branch:
  * main/dpkg.8: don't list all authors but refer to THANKS file
  * debian/control: correct Build-Dependencies for ncurses
  * debian/control: update extended description to not list dependencies
    for dpkg-dev
  * Update lots of documentation
  * main/enquiry.c: handle failed open of /dev/tty
  * main/remove.c: revert earlier patch from Oct 11 1999 to remove
    conffiles before removing directories. Due to the changed execution
    order conffiles were no longer around when the postrm was run.
    which is not what we want.
  * methods/Makefile.in: create $(admindir)/methods/mnt
  * scripts/dpkg-gencontrol.pl: undo Source-Version changes
  * scripts/dpkg-source.pl: remove sticky bits from directory when
    unpacking source
  * scripts/install-info.pl: partially apply patch from Jammin Wheeler
    <jammin@life.eu.org> to clean up errors
  * scripts/update-alternatives.pl: implement --verbose

Sun Feb 13 01:06:46 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-buildpackage.sh: we know that dpkg-architecture is
    installed since we provide it, so don't test for its existence
  * More updates from Marcus Brinkman:
    + archtable: Change first column format from CPU to CPU-OS.
      Add entry for i386-gnu. Update comment.
    + configure.in: Check Debian architecture revamped:
      More appropriate check title. Check for CPU-OS in arhctable (instead
      just CPU). Enclose result message in [...] (because of the comma
      character). After the test, $dpkg_archset can't be empty, so remove
      following test which is always true.
    + Remove internal use of --print-architecture:
      scripts/controllib.pl: Use always dpkg-architecture -qDEB_HOST_ARCH
      scripts/dpkg-buildpackage: Don't set $arch at command line parsing time,
        instead, always set it later with dpkg-architecture -qDEB_HOST_ARCH
      dpkg-name.pl: Fall back to dpkg --print-installation-architecture.

Sat Feb 12 17:11:33 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: don't try to outguess what CFLAGS should be
  * scripts/update-alternatives.8: fix typo
  * `Merge Marcus Brinkman patches day':
    + scripts/dpkg-architecture.pl: architecture -q should not imply -f
    + scripts/dpkg-shlibdeps.pl: build a list of packages instead of
      overwriting previous results. 
    + utils/start-stop-daemon.c: update HURD specifics
    + configure.in: revamp HURD detection stuff
    + debian/rules: use dpkg-buildarchitecture to get proper info,
      set config_arg if we are crosscompiling
    + debian/rules: typo in clean target, scan start-stop-daemon for
      shlibdeps
      
Tue Feb  8 21:33:58 EST 2000 Ben Collins <bcollins@debian.org>

  * main/{processarc,archive}.c: Make the conflictor an array of structs and
    make sure that check_conflicts uses that and increments a global indexs
    for the array. The reason that multiple conflicts/replaces were getting
    borked had something to do with thre first one in the hash not being
    processed. This was the result of bad pointer games, so this makes it a
    lot cleaner.

Wed Jan 19 16:41:04 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/controllib.pl: add comment with description of global variables
  * scripts/dpkg-genchanges.pl:
    + add comment with description of global variables
    + Change Format number to 1.7
    + `Maintainer' is now the actual maintainer as listed in control
    + add `Changed-By' field with maintainer as listed in changelog. Add -e
      flag to override this value
  * scripts/dpkg-buildpackage.sh: pass -e on to dpkg-genchanges
  * scripts/dpkg-source.1: document new -e option, update copyright

Mon Jan 17 21:20:35 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * dselect/Makefile.in: not all shells support == for strings comparisons
  * version-nr: update to 1.6.8
  * scripts/dpkg-shlibdeps.pl: update to version from dpkg_test_bz2_syslog_sigs
    branch:
    + use objdump instead of ldd
    + correct checks on shlibs.local

Sun Jan 16 22:07:12 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * main/dpkg.8: note that --force-overwrite is off by default
  * po/.cvsignore: add all the .gmo files

Sat Jan 15 03:48:47 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * doc/ja/dpkg-deb.5: updated with patch from Hiroshi KISE <fuyuneko@ryukyu.ne.jp>
  * THANKS: Add Hiroshi KISE

Tue Jan 11 03:34:22 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-genchanges.pl: also upload full source if version is *-0.1
  * doc/ja/dpkg.8: updated with patch from Hiroshi KISE <fuyuneko@ryukyu.ne.jp>

Tue Jan 11 18:32:52 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: Fix include in test for alphasort 
  * Makefile.in: add intl to subdirectory-list
  * dpkg-deb/Makefile.in: set top_builddir
  * dselect/Makefile.in: set top_builddir
  * main/Makefile.in: set top_builddir
  * lib/compat.c: add really simple snprintf (doesn't do range-checking)
  * lib/compat.c: add sys_siglist
  * configure.in: add tests for snprintf and sys_siglist
  * include/dpkg.h.in: don't include sys/sysinfo.h, filesdb.c is the only
    thing that needs it and it has its own include.

Tue Jan 11 02:02:00 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * dselect/baselist.cc: don't specify SA_INTERRUPT, since it's
    not portable and the default behaviour
  * main/enquiry.c: include sys/termios.h (needed on Solaris)
  * lib/lock.c: use EACCESS instead of EWOULDBLOCK
  * dselect/main.cc: fix help for -D
  * dselect/main.cc: try to lock admindir instead of using readwrite
  * dselect/method.cc: switch to using fcntl for lock since that is more
    portable, and revamp lockingcode to reduce code duplication

Mon Jan 10 20:55:45 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * Update Swedish and Russian translation

Sun Jan  9 16:11:39 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * Merge patches from Josip Rodin:
    + various text and manpage updates
    + dselect/method.cc: don't abort if locking fails but give a
      warning
    + THANKS: fix various small errors 

Sun Jan  9 01:40:23 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * scripts/cl-debian.pl: Allow space between `#' and the bugnumber in the
    changelog scripts
  * scripts/start-stop-daemon.c: test for __sparc__ instead
  * scripts/Makefile.in: add optlib to CFLAGS
  * utils/start-stop-daemon.c: add option to chroot first, patch from Marco d'Itri
  * utils/start-stop-daemon.8: document chroot option
  * dselect/pkgtop.cc: use waddnstr to print package description instead of waddch

Fri Jan  7 18:24:45 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * dselect/method.cc: pass admindir to dpkg
  * dselect/Makefile.in: fix rule to build helpmessages
  * dselect/curkeys.h: use curses.h instead of ncurses.h, since someone
    decided to play nasty and just remove that
  * scripts/: remove dpkg-safelist
  * dpkg-deb/build.c: remove dpkg-safelist calls
  * main/enquiry.c: redo formula to get fieldwidths for packages

Wed Jan  5 17:09:45 CET 2000 Wichert Akkerman <wakkerma@debian.org>

  * Merge patch from Tom Lees <tom@lpsg.demon.co.uk>:
    + scripts/dpkg-buildpackage.sh: support debsign
  * scripts/update-alternatives.8: fix wrong order of parameters
    in ACTION section
  * Updated Polish translation

Sun Dec 26 01:31:08 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Update copyright for Swedish translation to SPI instead of Debian

Sat Dec 25 04:04:48 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * dselect/pkgtop.cc: use waddnstr instead of waddch so we don't strip
    the 8th bit of characters
  * Replace `Debian Linux' with `Debian GNU/Linux' in some more places
  * Update Spanish translation
  * main/enquire.c: always use a minimum width of 80 in list1package
  * debian/rules: install dpkg-safefilelist

Sat Dec 25 02:50:31 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Oops, forgot to add scripts/dpkg-safefilelist.{1,pl}
  * debian/control: remove double empty line
  * dpkg-deb/main.c: Fix help-message

Fri Dec 24 17:34:30 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * version-nr: update to 1.6.5
  * doc/Makefile.in: install THANKS
  * TODO: remove items that have been done
  * lib/showcright.c: exit(0) after showing the copyright since
    we don't exec cat anymore
  * Patch from David Huggins-Daines <dhd@eradicator.org>:
    + main/configure.c: add NULL to execlp() parameters; this fixes the random
      segfaults when showing the conffile-diff

Fri Dec 24 15:35:29 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * debian/control: add Build-Depends
  * THANKS: new file which lists everyone who contributed to the code
  * Change `Debian Linux' to `Debian GNU/Linux' in a couple of manpages
  * main/enquiry.c: modify list1package to use the full width of the tty
  * main/main.c: fix wrong call to fputs
  * Merge patches from Adam Heath:
    + lib/mlib.c: new function do_fd_copy to read a file into a fd
    + dpkg-deb/build.c: use do_fd_copy
    + dpkg-deb/build.c: use dpkg-deb-filelist to reorder files when
      building a package
    + dpkg-deb/info.c: use do_fd_copy 
    + lib/showcright.c: use do_fd_copy to read license
    + scripts/dpkg-safelist.{1,pl}: new script to reorder a filelist to
      make sure symlinks are listed after their targets. 
    + dpkg-deb/main.c: add -z option to set compression level
    + dpkg-deb/build.c: pass new -z options to gzip
  * dpkg-deb/dpkg-deb.1: document new -z option

Wed Dec 22 13:41:41 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * main/main.c: cleanup printversion

Wed Dec 22 12:07:40 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * debian/dpkg-doc.postrm: Use doc-name instead of file-name (probably
    need to change the filename, but I'll be lazy now :)
  * dselect/pkgdisplay.cc: Replace empty string for eflags with a space
    so gettext doesn't use the translation-info
  * po/update.sh: Generate dselect/helpmsgs.{cc,h} so we can translate them.
  * po/POTFILES.in: add dselect/helpmsgs.cc
  * dselect/Makefile.in: put helpmsgs.{cc,h} in $(srcdir), since gettext
    will barf on us if we put them in the builddir. (The real issue here is
    that when we generate the .po-files we don't know what the builddir will
    be and gettext can't handle VPATH).
  * dselect patches from Dan Gohman <gohmandj@mrs.umn.edu>:
    + dselect/pkgtop.cc: use ACS_HLINE instead of `-'
    + dselect/baselist.cc: change colour of column headings
    + dselect: add a new --expert mode which suppresses the display of the
      helpscreen

Tue Dec 21 15:59:35 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-scansoures.pl: don't use \z since that is perl5.005-specific.
    Patch from Roderick Schertler <roderick@argon.org>
  * debian/rules: fix typo so cleanup-info.8 actually gets installed

Fri Dec 17 00:41:50 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Makefile.conf.in: use @libdir@ and @admindir@
  * configure.in: add --with-admindir option and change the default
    to $libdir/db
  * debian/rules: add --with-admindir=/var/lib/dpkg
  * scripts/debian-changelog-mode.el: update location of GPL
  * scripts/dpkg-name.sh: update location of GPL

Thu Dec 16 15:20:11 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * utils/start-stop-daemon.c: Fix OS-detection for sunos
  * utils/update-rc.d: Accept single-number values, since they are
    always in the [0,99] range

Wed Dec 15 16:08:47 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * autogen.sh: copy gettextm4, lcmessage.m4 and progtest.m4 to automake/
    for systems without gettext installed
  * Makefile.in: remove the gettext-macros in distclean
  * utils/Makefile.in: fix clean target, link md5sum and start-stop-daemon
    with optlib
  * optlib/*: getopt implementation for systems without GNU getopt.

Wed Dec 15 00:18:30 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * configure.in: Add option to disable building dselect
  * configure.in: Test for ptrdiff_t and stddef.h
  * config.h.bot: iclude stddef.h if it exists
  * Add config.sub and config.guess

Tue Dec 14 20:08:58 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * automake/sysconf.m4: really add the file this time
  * po/sv.po: new version with minor corrections
  * main/depcon.c: minor corrections to depisok()
  * scripts/dpkg-buildpackage.sh: fix -nc option

Mon Dec 13 15:18:03 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * scripts/dpkg-gencontrol.pl: use findarch to get the architecture

Sun Dec 12 23:59:25 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * dselect/main.cc: We need to printf programdesc as well
  * autogen.sh: Remove libtoolize call
  * automake/sysconf.m4: new autoconf-macros for sysconf
  * filesdb/main.c: also check MEMINFO_IN_SYSINFO
  * configure.in: remove ugly sysinfo-hacks to use new ac macros instead
  * utils/start-stop-daemon.c: modify to build on sunos

Sun Dec 12 17:20:12 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Update the Swedish translation
  * start-stop-daemon.c: check exitnodo-flag if we fail to kill a
    process

Sun Dec 12 00:41:01 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add Swedish translation from Peter Karlsson <pk@mds.mdh.se>

Wed Dec  8 01:36:35 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Update Czech translation

Tue Dec  7 17:41:17 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Drop the emacs bytecompile-stuff completely

Tue Dec  7 14:08:21 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Fix display of copyright in menu

Tue Dec  7 01:26:21 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Comment changes made in pkgdepcon.cc; they're not completely
    correct yet

Mon Dec  6 01:37:08 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Correct uid/gid-changes in start-stop-daemon, patch from
    Topi Miettinen <Topi.Miettinen@nic.fi>

Sun Dec  5 18:09:36 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add manpages from Josip Rodin <joy@cibalia.gkvk.hr> for
    cleanup-info and dpkg-divert
  * New dpkg-scansources from Roderick to allow trailing blanks on lines
  * Correct generation of manual-version
  * Merge patch from Richard Kettlewell <rjk@sfere.greenend.org.uk> to
    eliminate string copies while reading .list files
  * Fix earlier translation-patch for dselect so it builds again

Sat Dec  4 04:22:49 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Update the polish translation

Mon Nov 29 21:11:35 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Change default lispdir to $(prefix)/emacs/site-lisp/$PACKAGE

Sun Nov 28 21:56:32 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * dselect/pkgdepcon.cc: don't treat recommends like (pre-)depends.
    Instead make it similar to suggests but default to selecting the package.

Sat Nov 27 09:46:26 EST 1999 Ben Collins <bcollins@debian.org>

  * utils/start-stop-daemon.c: call initgroups() prior to seteuid()

Fri Nov 26 18:36:22 EST 1999 Ben Collins <bcollins@debian.org>

  * dselect/main.cc: fixed three cases where gettext usage was not
    possible die to macros inlined in the strings

Fri Nov 26 18:09:17 EST 1999 Ben Collins <bcollins@debian.org>

  * configure.in: generate utils/Makefile
  * utils/configure.in: removed so top level configure will take over this
    subdir

Fri Nov 26 02:21:56 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Fix .so-entries for script manpages

Thu Nov 25 23:59:24 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Correct location of documentation in debian/dpkg-doc.doc-base

Thu Nov 25 04:55:18 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Correct name of source tarball in debian/rules

Thu Nov 25 03:45:23 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge the new buildsystem from the wta_build branch. If you want
    the old buildsystem check the last-of-automake tag

Fri Nov 19 15:04:10 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * `n' is also searchagain in dselect now
  * Do searchagain if an empty searchstring is entered

Thu Nov 18 10:27:35 EST 1999 Ben Collins <bcollins@debian.org>

  * utils/start-stop-daemon.c: Added ability for user.group arg to
    --chuid. Also, always call initgroups() when using --chuid.
  * utils/start-stop-daemon.8: Document above change, also add note to the
    --make-pidfile option concerning its problem with daemons that fork

Fri Nov 12 21:21:21 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Rename japanses translation to just jp

Thu Nov 11 20:14:02 EST 1999 Ben Collins <bcollins@debian.org>

  * lib/tarfn.c: add braces around if to fix compiler warning

Fri Nov 12 01:47:24 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Correct names for build-depency names according to Bug# 49792
  * .. and for dpkg-source.pl as well

Mon Nov  8 17:45:50 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add support for enhances to dpkg and dselect. dselect doesn't
    take any action on it yet though

Tue Nov  2 20:19:48 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Fix some language mixups: our Polish translation was actually
    Czech, and we somehow lost the real Polish text..

Mon Nov  1 23:25:32 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add partial Russian translation from Michael Sobolev <mss@transas.com>

Sat Oct 30 16:22:00 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Fix file conflict between dpkg-dev, dpkg
  * Move changelog.manual to dpkg-doc

Sat Oct 30 03:31:30 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Make it all build again
  * retro-actively add this ChangeLog entry
  * Removed bogus po/dpkg.po file
  * No longer translate internal errors.. we want to see the English text
    in bugreports

Fri Oct 29 20:16:43 EDT 1999 Ben Collins <bcollins@debian.org>

  * po/update.sh: make sure we only update when there are changes,
    also autodetect list of .po files we need to change
  * release.sh: likewise for .gmo generation

Fri Oct 29 16:51:03 EDT 1999 Ben Collins <bcollins@debian.org>

  * main/archives.c: s/DPK/DPKG/ from one of the gettext changes

Fri Oct 29 21:16:21 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Fix name for Polish translation

Fri Oct 29 10:37:16 EDT 1999 Ben Collins <bcollins.debian.org>

  * dpkg-divert: Fix check for writable filesystem, closes: #48646

Thu Oct 28 22:14:49 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add Polish translation from Piotr Roszatycki <dexter@fnet.pl>

Thu Oct 28 10:10:23 EDT 1999 Ben Collins <bcollins.debian.org>

  * dpkg-shlibdeps: fix ordering for shlibs.default

Wed Oct 27 21:33:19 EDT 1999 Ben Collins <bcollins.debian.org>

  * release.sh: remove attic/ and doc/obsolete/
  * dpkg-gencontrol: add "Source" to the fields placed in the control file
  * dpkg-parsechangelog: fixed loop for parsepath

Tue Oct 26 19:35:53 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Also translate helpmessages for dselect

Mon Oct 25 21:08:06 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Added Czech translation from Petr Cech <cech@atrey.karlin.mff.cuni.cz>

Mon Oct 25 19:10:50 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Mark more strings for translation in libdpkg and dpkg
  * Don't bother translating debug-statements

Mon Oct 25 11:55:35 EDT 1999 Ben Collins <bcollins.debian.org>

  * scripts/dpkg-shlibdeps: start using objdump as opposed to ldd, this
    works much more cleanly, works with libc5, and allows from better
    error reporting. Also corrected checks on shlibs.local, which wasn't
    really being parsed, it now works as advertised.
  * scripts/{dpkg-gencontrol,dpkg-source,controllib.pl}: fixed references
    to old style build dep fields to match current policy amendment

Mon Oct 25 17:12:34 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * gettextize dselect

Mon Oct 25 08:42:52 EDT 1999 Ben Collins <bcollins.debian.org>

  * debian/rules: fix symlink creaton for /usr/share/doc/dpkg-dev -> dpkg,
    also compress the info and ps files for internals in dpkg-doc

Mon Oct 25 06:50:17 EDT 1999 Ben Collins <bcollins.debian.org>

  * main/processarc.c: fixes calculation of package filename display (the
    ".../foo.deb" one) where it was showing the full path if the basename
    was longer than 30 chars. Now shows just the basename if it can't
    squeez the full path to < 30 chars (even if the basename is > than 30
    chars)

Mon Oct 25 02:27:49 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * dselect/main.cc: Fixup error message for invalid parameter to reflect
    we are dselect, not dpkg

Sun Oct 24 20:46:44 EDT 1999 Ben Collins <bcollins.debian.org>

  * scripts/dpkg-source.pl: we want to 'delete' the POSIXLY_CORRECT env
    not 'undef'

Sun Oct 24 20:25:11 EDT 1999 Ben Collins <bcollins.debian.org>

  * debian/dpkg-doc-{postrm,prerm}: Added install-info for internals.info
  * debian/dpkg-internals: fixed misplaced description

Sun Oct 24 11:39:21 EDT 1999 Ben Collins <bcollins.debian.org>

  * debian/control: added dpkg-doc
  * debian/dpkg-doc-{postinst,prerm}: new files for dpkg-doc package
  * debian/dpkg-internals: doc-base support for dpkg-doc
  * debian/rules: added build rules for dpkg-doc to binary-indep target
  * doc/Makefile.am: changed build setup for internals.sgml to use the
    debiandoc tools, and removed internals.* stuff from being built by
    default. Two new targets, internals and internals-install, now handle
    this
  * doc/changelog: removed, duplicate of ChangeLog
  * doc/internals.sgml: converted to debiandoc format, now builds correctly
    and without errors
  * doc/manuals-version: removed since it is generated at build time
  * doc/texinfo.*: moved to doc/obsolete/ since the debiandoc format doesn't
    need them
  * main/filesdb.c: fixed compiler warning

Sat Oct 23 21:23:08 EDT 1999 Ben Collins <bcollins.debian.org>

  * Added 'D' to the list of choices for conffile handling

Sat Oct 23 16:25:16 EDT 1999 Ben Collins <bcollins.debian.org>

  * main/{processarc.c,depcon.c}: added new structure for conflictors,
    which contains a struct for conflicts. This is used to create an array
    of conflicting packages, which are going to be replaced. Allows for
    multiple conflicts and replaces. All conflictor handlers were
    converted to loops to handle each one (processarc.c).

Sat Oct 23 09:22:16 EDT 1999 Ben Collins <bcollins.debian.org>

  * Leave file info intact in available when installing packages. MD5sum,
    Filename, and MSDOS-Filename used to get lost when installing a package.
  * Backout dep check patch (merged from v1_4_1_18)
  * Added armv4l to archtable

Thu Oct 21 12:57:31 EDT 1999 Ben Collins <bcollins.debian.org>

  * Fixed incorrect patch for --print-architecture (oops, oh well
    it was already broken when there was no gcc anyway :)
  * Fixed missing mipseb that was supposed to be in the archtable
  * Better output in update-alternatives --config, now shows the
    current, and the preferred choices.
  * dpkg-name: ignore epoch when getting version
  * 50dpkg-dev.el: add it as a conffile for dpkg-dev
  * dpkg-shlibdeps: redirect STDERR to /dev/null for the dpkg fork so we
    don't see dpkg's errors
  * internals.sgml: Removed references to the versions of build tools,
    they date the document.
  * debian-changelog-mode.el: added hint for better log-email handling
  * Added recognition for new source-depends fields for policy
    referenced in bug #41232
  * dpkg-buildpackage: add -ap option to force a pause prior to starting
    the sign process. This helps for people who don't keep their signatures
    on the filesystem (on a floppy perhaps, then mount as needed).
  * minor script corrections
  * dpkg-dev control: Change gcc to c-compiler in the recommends field, and
    move cpio, patch and make to the depends line

Thu Oct 21 10:22:43 EDT 1999 Ben Collins <bcollins.debian.org>

  * Fixed the check that was added to dpkg-divert.
  * Removed the lib version checking.
  * Oops, somehow the --config feature went missing from update-
    alternatives

Thu Oct 21 13:22:42 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Update copyright (taken from dpkg-iwj tree, with Ben added)
  * Add support for long filenames in tarfiles. Based on a patch
    from Andrew Hobson <ahobson@eng.mindspring.net>
  * Add a --assert-longfilenames option

Thu Oct 21 06:37:24 EDT 1999 Ben Collins <bcollins.debian.org>

  * Fixed some compiler warnings
  * Make start-stop-daemon exit(1) when we don't find one of the
    pid's we are trying to kill, in accordance with the man page.
  * When running --configure on an already installed package, just
    say it's installed, and not that it is in an unconfigurable
    state
  * Bah, add all the prefix/datadir... stuff back to the install
    target in debian/rules (po/ doesn't use it)
  * Add function to libdpkg that dpkg can call to make sure it's
    compiled version matches that of the library. If it fails,
    complain loudly, but allow to proceed
  * Make dpkg check for uid 0 requirement, before checking the path
    since not being root, is probably the reason that the PATH is
    borked in the first place
  * Make -p short for --print-avail, and -P short for --purge
  * Fix typo in md5sum(1) man page
  * start-stop-daemon: Add --background and --make-pidfile options
  * update-alternatives: make sure we remove "old" symlinks when they
    are no longer pertinent. Add /etc/alternatives/README that refers
    to the update-alternatives(8) man page.
  * dpkg-divert: Add check for being able to write to the old/new
    destination before doing a rename. We fail on this, without
    changing the diversion registry
  * Fix bad regex in update-rc.d

Tue Oct 19 18:07:28 EDT 1999 Ben Collins <bcollins.debian.org>

  * Ok, TMPDIR usage is back in dpkg-deb and working
  * {include,scripts}/Makefile.am: Fix for using DESTDIR
  * debian/rules: really convert to DESTDIR on install target this
    time. chmod -x everything in /usr/lib to make lintian happy.
    in the clean phase just rm -rf $(BUILD), we don't need to run
    distclean and all that other stuff. Don't run "make dist", we
    simply copy the .tar.gz that dpkg-source creates for the byhand
    source.

Tue Oct 19 09:59:22 EDT 1999 Ben Collins <bcollins.debian.org>

  * Reverted the new tmpfile stuff in dpkg-deb. For some reason it's
    completely corrupting the new package

Mon Oct 18 18:40:35 EDT 1999 Ben Collins <bcollins.debian.org>

  * Reimplemented a better *stat cache for the removal checking code,
    this helps a lot when doing upgrades where the packages are a lot
    different in layout. Note, I tested the first way and this new way
    against package foo (version 1 & 2) each had 5000 files (different
    in version 2 than in version 1). basically this meant the old way
    needed to do about 2.5 million lstats, and the new way only needs
    10,000 lstats. This sped it up about %6000 percent (the old way took
    over 1 hour on a 333Mhz, the new way was 2 minutes and 20 seconds).
    Note that this is an extreme case since most per package upgrades
    a) don't have 5000 files
    b) don't have all the files different
  * Increased largemem auto detection to >= 24megs, since it's not uncommon
    for dpkg to actually use 16megs of ram all on its own when using the
    largemem setting (old minimum was 16megs)

Mon Oct 18 09:25:30 EDT 1999 Ben Collins <bcollins.debian.org>

  * Add mipseb to the archtable too, since mips and mipseb are
    both viable names for the mips big endian arch
  * Update dpkg-architecure's archtable
  * Removed the maintainer-configure portion in debian/rules, since
    we should be shipping the source with all the auto* stuff
    already generated anyway
  * Removed the ltconfig patch, and resort to a debian/rules fix
    to libtool itself after running configure, much cleaner, and
    reversible since libtool is a generated file
  * Use DESTDIR when installing instead of specifying all our
    dest dirs separately in the make line. Also fix some of the
    make files to use DESTDIR when installing files
  * Regenerated .po files and dpkg.pot. Also added update.sh to the po/
    subdir for easier regenerating for cvs only
  * Make release.sh generate .gmo files
  * Removed shlibs.default.i386. It's now a template for arch porting to
    Debian/dpkg, we install it still, if there exists a file matching the
    arch

Sun Oct 17 13:40:46 EDT 1999 Ben Collins <bcollins.debian.org>

  * Removed references to dpkg(5) which seems to not exist anymore
  * Fixed `dpkg-deb --help' and dpkg-deb(1) from reporting --no-check
    when it's actually --nocheck (went with the hardcoded option, so
    this is just a documentation fix).
  * Added better check in disk.setup for a working NFS server. Makes
    it compatible with other non-Linux servers.
  * Corrected dpkg(8)'s example of using dpkg -i (showed it used with
    a .tar.gz instead of a .deb)
  * Applied patch to correct improper TMPDIR handling in dpkg-deb
  * When encountering an error in extracting the tar archives in the
    packages, we should abort the install, not simply give an error
    and continue.
  * Make dpkg give the builtin arch if there was an error while exec()'ing
    the C compiler with --print-architecture. We still fail if the
    output from gcc was bad in some way, since they may be of importance.

Sun Oct 17 11:51:36 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Revert to hardcoding ENOENT again, since the necessary parts of
    the perl POSIX module aren't in perl-*-base. sigh.

Sat Oct 16 11:43:45 EDT 1999 Ben Collins <bcollins.debian.org>

  * Added --chuid option to start-stop-daemon to allow switching to
    a different uid when starting a process
  * Added mipsel to the archtable for completeness
  * Added --config option to update-alternatives to allow easy changing
    of the registered alternatives for a specific name
  * Updated the deb-control(5) man page with all the current fields
    and uses
  * Made the large info screen show 5 lines of the pkglist so that
    it scrolled properly, and still showed the cursor

Thu Oct 14 04:51:14 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Don't use Errno module but the POSIX module, since that *is*
    in perl-*-base
  * Fixup debian/rules

Thu Oct 14 04:39:25 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Update dpkg manpage to add new --force-conf* options

Thu Oct 14 04:16:25 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Reinstate patch to not read available-file with doing listfiles.
  * Don't forget to get the correct SHELL before showing a diff of
    conffiles!
  * Merge a patch from Ben Collins to add a bunch of --force options
    to handle changed conffiles

Thu Oct 14 03:37:52 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add mips to archtable
  * Use Errno module to get ENOENT instead of hardcoding it

Thu Oct 14 02:47:40 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Fix C error we introduced in checkpath() earlier

Wed Oct 13 20:41:16 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Update oldfile-check in process_archive so we don't experience
    memory corruption

Wed Oct 13 17:51:17 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge patches from Ben Collins <bcollins@debian.org>:
    + fix windowresizing in dselect
    + when upgrading check if a file is not also in the new package before
	  removing it, so we don't remove new files due to symlinks confusing us
    + fix logic error in checkforremoval: it was breaking cycles in for the
      wrong package
    + fix findbreakcycle to remove cycles even for packages we are not changing

Mon Oct 11 22:19:01 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add the option to show a diff of the old and new conffile when
    configuring a package

Tue Oct 12 17:15:08 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * don't die if we can't open a package in dpkg-scanpackages, just print
    a warning and skip the package.

Mon Oct 11 18:18:25 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Move dselect into its own package

Mon Oct 11 17:37:47 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Added support for HURD to start-stop-daemon
  * Create new directory utils/ for extra C-programs, and move
    start-stop-daemon there.

Mon Oct 11 15:47:18 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Preparation to move start-stop-daemon from scripts to utils
  * Merge patches from Ben Collins <bcollins@debian.org>:
    + modify remove_buld to remove conffiles when purging a package before we
      remove its directories.
    + check if we violate conflicts/depends/pre-depends of other packages when
      processing an archive.

Mon Oct 11 02:13:15 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge patch from Ben Collins <bcollins@debian.org> to make dpkg-deb
    handle packages created with Linux ar.

Thu Oct  7 01:16:23 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Check if sequencecode is between 0 and 99 instead of just checking
    for a number in update-rc.d

Wed Oct  6 14:40:33 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Lock complete lockfile for database: it's empty anyway, and Hurd
    doesn't support partial locks currently
  * Don't use PATH_MAX but allocate necessay memory in checkpath().
    Useful for system that don't have PATH_MAX (like Hurd)

Tue Oct  5 19:16:38 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Set docdir to $(datadir)/doc
  * Install /etc/emacs/site-start.d/50dpkg-dev.el with mode 644

Tue Oct  5 04:08:41 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Make /usr/share/doc/dpkg-dev a symlink to /usr/share/doc/dpkg

Mon Oct  4 15:38:42 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Update GPL and documentation location in debian/copyright

Sat Oct  2 16:00:38 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Update deb.5 to say it's in section 5, not 8

Tue Sep 28 13:38:50 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Make dpkg-source work again on empty diffs, patch from Roman Hodek
    <Roman.Hodek@informatik.uni-erlangen.de>

Tue Sep 28 01:14:14 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Fix typo in dpkg-buildpackage that broke signing if only -sgpg was given

Mon Sep 27 04:25:32 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Change changelog-style for ChangeLog, the package-style doesn't work
    well for CVS IMHO.
  * Merged patch from Adam Heath <doogie@debian.org> to make update-alternatives.pl
    work across filesystems

dpkg (1.4.1.12) unstable; urgency=low

  * Non-maintainer release.
  * Fix typo in chmodsafe_unlink that made dpkg chmod files that
    weren't setuid or setgid

 -- Wichert Akkerman <wakkerma@debian.org>  Sun, 26 Sep 1999 02:41:30 +0200

dpkg (1.4.1.11) unstable; urgency=low

  * Non-maintainer release.
  * Added sparc64 to archtable
  * Added entries for newer alpha architectures to the archtable
  * Always run patch and diff with LANG set to C.
  * Handle diff warning for files with no newline at the end of file
    Closes: Bug#45642

 -- Wichert Akkerman <wakkerma@debian.org>  Fri, 24 Sep 1999 03:23:54 +0200

dpkg (1.4.1.10) unstable; urgency=low

  * Non-maintainer release.
  * Build dpkg-scansources manpages using pod2man
  * dpkg-buildpackage changes:
    + fix signinterface-detection
    + use gpg by default if $HOME/.gnupg/secring.gpg exists

 -- Wichert Akkerman <wakkerma@debian.org>  Thu, 16 Sep 1999 15:36:43 +0200

dpkg (1.4.1.9) unstable; urgency=low

  * Non-maintainer release.
  * Updated dpkg-scansources to current version from Roderick Schertler
  * Update location of GPL in internals-manual
  * Update location of GPL and dpkg copyright in all manpages
  * Include patch from Roman Hodek for dpkg-source to handle diffs of files
    with lines that begin with two dashes.
  * Move dpkg-scansources to dpkg-dev package
  * Move dpkg-scansources manpage to section 8
  * Fix error that moved a lot of manpages to the dpkg package.
  * It looks like not reading the available-file for listfiles was not greeted
    with much enthiousiasm, so reverse the change.

 -- Wichert Akkerman <wakkerma@debian.org>  Wed, 15 Sep 1999 03:45:07 +0200

dpkg (1.4.1.8) unstable; urgency=low

  * Non-maintainer release.
  * Merge dpkg-doc-ja
  * Add patch from Raphaël Hertzog <rhertzog@hrnet.fr> for dpkg-scansources
    to skip comments in signatures. This allows packages to also use GnuPG.

 -- Wichert Akkerman <wakkerma@debian.org>  Mon, 13 Sep 1999 04:16:33 +0200

dpkg (1.4.1.7) unstable; urgency=low

  * Non-maintainer release.
  * Use /usr/share/doc
  * Merge changes from dpkg-iwj tree:
    + change section in dpkg-deb.1 to 1
    + Use COPYINGFILE instead of hardcoded GPL-location in showcopyright()
    + varbufprintf (used for some error messages) vsnprintf return value
      assumption changed to correspond to reality rather than glibc-doc.
    + Don't read available-info when not needed (slightly improved from 
	  dpkg-iwj: don't read for listfiles either :)
    + Cleanup --assert-* code
    + Assume largemem on systems without sysinfo(2).
    + modify preexec-script for easier script execution
    + Do not chmod(".../path/to/symlink",0600) causing many bad perms.
    + Sanity-check numbers for parameters
    + Move some logic from process_archive into wantinstall
    + Print '0' in dpkg-scanpackages if no packages found.

 -- Wichert Akkerman <wakkerma@debian.org>  Fri, 10 Sep 1999 04:06:32 +0200

dpkg (1.4.1.6) unstable; urgency=low

  * Non-maintainer release.
  * scripts/dpkg-architecture.pl: Update to latest version.
  * scripts/dpkg-architecture.1: Likewise.
  
 -- Marcus Brinkmann <brinkmd@debian.org>  Sat, 24 Jul 1999 18:24:21 +0200

dpkg (1.4.1.5) unstable; urgency=low

  * Non-maintainer release.
  * (dpkg-dev): Use emacsen-common for debian-changelog-mode.el
    (closes:Bug#20776,#31030).
  * Removed references to the packaging and policy manuals from debian/control.
  * Put debian-changelog-mode.el in dpkg-dev and remove from dpkg (closes:Bug#29271).
  * Fix paths in 50dpkg-dev.el using Roderick Schertler's patch
    (closes:Bug#28270,#29702,#26876,#29184,and others).
  * Note that bug number 17367 was fixed in 1.4.0.26.
  * Add Zack Weinberg's install-info patch for GNU install-info
    compatibility (closes:Bug#28965).
  * Add dpkg-architecture stuff from Marcus Brinkmann.
  * Remove debian-keyring suggests from dpkg.
  * Add -k<keyid> flag to dpkg-buildpackage.
  * --textmode works in gpg, remove kluge from dpkg-buildpackage.
  * Cleanup configure.in slightly (stop using tl_ macros, fix gettext stuff).
  * Attempt to make Debian source useful for non-Debian systems
    (i.e. distclean tree instead of maintainer-clean tree).
  * Sync with wichert's 1.4.1.4.
  * Add my ltconfig-1.3.2.diff (RPATH workaround).
  * Add dpkg-scansources program and man page.
  * Man pages in /usr/share/man.

 -- Joel Klecker <espy@debian.org>  Tue, 13 Jul 1999 18:12:15 -0700

dpkg (1.4.1.4) unstable; urgency=low

  * Also change developer-keyring to debian-keyring for dpkg-dev package
  * Include spanish translation from Nicolás Lichtmaier <nick@debian.org>
  * Depend on perl5 instead of perl

 -- Wichert Akkerman <wakkerma@debian.org>  Mon,  5 Jul 1999 00:04:14 +0200

dpkg (1.4.1.3) unstable; urgency=low

  * Modify tarobject() so it does not complain if we are creating a
    directory that replaces a removed file. This works around the
    problem that the filedatabase doesn't remember what filetype a
    file was by assuming it already was a directory

 -- Wichert Akkerman <wakkerma@debian.org>  Mon, 31 May 1999 23:49:23 +0200

dpkg (1.4.1.2) unstable; urgency=low

  * Non-maintainer upload
  * Rebuild, so this is glibc2.1 (unless you're on m68k), which is rumoured
    to also fix the i8n-problems.
  * Incorporate 1.6 format of .changes, patch from Guy Maor
  * Fix bug in section-handling of dpkg-scanpackages, patch from Guy Maor
  * Disable force-overwrites again, since we're in unstable
  * Assume largemem on systems for which sysinfo is not available, Bug# 33658

 -- Wichert Akkerman <wakkerma@debian.org>  Wed, 26 May 1999 15:50:17 +0200

dpkg (1.4.1.1) unstable; urgency=low

  * Non-maintainer upload
  * Install emacs-startup scripts with mode 0644 (lintian)
  * Incorporate changes in NMU 1.4.0.32 made by Vincent Renardias
    <vincent@waw.com> for slink:
    + Apply patch from Jim Pick for update-alternatives.pl to
      fix 'Important' bugs #30891 in dpkg and (#27382, #27383, #27696,
      #27703, #27736, #27097(merged bugs)) in jdk1.1.
  * Incorporate changes in NMU 1.4.0.33 made by me for slink:
    + Fix illegal perl construct (Bug# 30985)
    + Initialize oialtname->useinstead and oicontest->camefrom to 0 (Bug# 30397)
    + Update shlibs.default for libncurses 4 (Bug# 30332)
    + Suggest debian-keyring instead of developer-keyring (Bug# 27376, 30248)
    + Abort dpkg-divert when attempting to divert a directory (Bug# 30126)
    + Make dpkg-deb.1 aware that it is in section 1, not 8
    + Fix section in reference to dpkg-deb in dpkg.8 (Bug# 29740)
    + Fix typo in --force-help (Bug# 26193)
    + Correct path for debian-changelog-mode.el (Bug# 24606)
    + Make disk-method for dpkg use /var/run instead of /tmp to fix
      symlink-attacks (Bug# 21399)
    + Document -n and -f options for update-rc.d in manpage (Bug# 15913)
    + Add --abort-after option to change after how many errors we abort and
      change the default to 50 (Bug# 22940)
    + Fix controllib.pl: don't check debian/substvars unless needed, and
      don't depend on language settings (Bug# 31508)
    + Allow a - in the architecture-field (Bug# 25537)

 -- Wichert Akkerman <wakkerma@debian.org>  Mon,  1 Feb 1999 00:44:01 +0100

dpkg (1.4.1) unstable; urgency=low

  * Maintainer release by IWJ.
  * Changed Maintainer: field description.
  * Various changes to make the damn thing build.
  * Add .cvsignore files.

 -- Ian Jackson <ian@davenant.greenend.org.uk>  Sun,  1 Nov 1998 17:33:38 +0000

dpkg (1.4.0.31) unstable; urgency=low

  * dpkg/processarc.c: Make newfileslist static like the other arguments
    for register_cleanup's cu_* functions.
  * N-th fix for controllib.pl (simulate old behavior by trying stdin,
    stdout, and stderr for getlogin()).
  * Enable --force-overwrite for slink release, and comment where to do
    so (dpkg/main.c).
  * Recompile against ncurses4.

 -- Daniel Jacobowitz <dan@debian.org>  Thu, 22 Oct 1998 17:37:23 -0400

dpkg (1.4.0.30) unstable; urgency=low

  * dpkg-dev isn't allowed to have a Recommends: debian-keyring (as that's
    in contrib), so it's now lowered to a Suggests: . Thanks to James Troup
    for pointing this out. 

 -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Sat, 26 Sep 1998 13:59:23 +0200

dpkg (1.4.0.29) unstable; urgency=low

  * For now, prefer PGP over GPG.

 -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Tue, 22 Sep 1998 09:38:09 +0200

dpkg (1.4.0.28) unstable; urgency=low

  * Added gpg (GNU Privacy Guard) support:
    * scripts/buildpackage.sh: default to GPG (unless no GPG, but only a PGP
      secret key file is found), as GPG, unlike PGP, is DFSG-free.
    * Updated dpkg-source(1), and added gpg(1) and pgp(1) to the SEE ALSO
      section.
    * Worked around broken textmode implementation in GPG.
    * dpkg-dev now Suggests: gnupg .
  * No longer includes developer-keys.pgp . Instead, dpkg now Suggests: and
    dpkg-dev now Recommends: developer-keyring.
  * Compiled with latest libstdc++ (2.9).

 -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Mon, 21 Sep 1998 13:17:14 +0200

dpkg (1.4.0.27) unstable; urgency=low

  * REALLY fixed dpkg-dev, and new attempt to placate installer on internals.

 -- Daniel Jacobowitz <dan@debian.org>  Fri, 27 Jul 1998 15:58:04 -0400

dpkg (1.4.0.26.0.1) unstable; urgency=low

  * Binary-only upload for x86 and fixed dpkg-dev

 -- Daniel Jacobowitz <dan@debian.org>  Fri, 24 Jul 1998 15:58:04 -0400

dpkg (1.4.0.26) unstable; urgency=low

  * Non-maintainer upload.

  * Make --root work with maintainer scripts (Patch by Scott Barker,
    bugs #4863 and #3170).
  * Fix $(lispdir) bug if compiling without emacs (noticed by Joey Hess).

 -- Daniel Jacobowitz <dan@debian.org>  Thu, 23 Jul 1998 12:02:04 -0400

dpkg (1.4.0.25) unstable; urgency=low

  * Non-maintainer upload.
  
  * Add the requested -nc option to dpkg-buildpackage (Do
    not clean source tree, useful in debugging cycles).
  * controllib.pl: Again by popular acclamation, fix the getlogin() warnings.
    I redirected STDERR onto fd 0 before calling getlogin().
  * tools.m4: Fix display of whether c++ works.
  * dpkg-deb/extract.c: glibc 2.1 and some kernels want to make
    fflush() move the current fpos.  Until someone can fix that,
    protect with seek.
  * Add an extra 0, to dselect/{pkg,meth}keys.cc so it compiles again.
  * Start using lchown() if available.
  * Really fix #20353. (aclocal.m4 was the wrong place; that's a generated
    file.  The correct place is in tl_canon.m4.)

 -- Daniel Jacobowitz <dan@debian.org>  Tue, 21 Jul 1998 03:14:14 -0400

dpkg (1.4.0.24) unstable; urgency=low

  * Non-maintainer upload.

  * dpkg/main.c: Turn --force-overwrite off as default.
  * dpkg/main.c: don't list --force-overwrite as default in --force-help,
    noticed by Peter Weiss <Peter.Weiss@Informatik.Uni-Oldenburg.DE> and
    others. [#23542, part of #17409].
  * dpkg/dpkg.8: replaced with a newer version from Jim Van Zandt
    <jrv@vanzandt.mv.com>. [#21061]

  * dpkg-deb/build.c (do_build): add missing \n and improve error message
    when conffile name is too long. [#7057]

  * scripts/update-alternatives.8: replaced with better man page from
    Charles Briscoe-Smith <cpb4@ukc.ac.uk>. [#17283]
  * scripts/dpkg-source.1: corrected logic error in documentation for
    dpkg-gencontrol's -p option, as noticed by Oliver Elphick
    <olly@linda.lfix.co.uk>. [#14655]
  * scripts/controllib.pl (findarch): correct typo in error message,
    noticed by Yann Dirson <ydirson@a2points.com>. [#22106]
  * scripts/dpkg-buildpackage.sh: fix typo s/source version/source
    maintainer/, noticed by Joey Hess <joey@kite.ml.org>, Adam P. Harris
    <apharris@onshore.com> and others. [#10175, #15559]
  * scripts/dpkg-genchanges.pl: applied patch from Roman Hodek
    <Roman.Hodek@informatik.uni-erlangen.de> which solves problems with
    architecture specific packages in mostly architecture independent
    multi-binary source packages. [#14341, #20192].

  * doc/Makefile.am: remove any reference to the packaging manual, as it is
    now provided by the separate "packaging-manual" package.
  * doc/packaging.sgml: removed.
  * doc/developer-keys.pgp: updated to the current debian keyring.

  * aclocal.m4: applied patch from Joel Klecker <jk@espy.org> to handle
    egcs' --print-libgcc-file-name output. [#20353]
  
  * debian/copyright: correct FSF address.
  * debian/rules: add code from lesstif's debian/rules to make libtool
    less of a fool (i.e. not use -rpath and to link shared libraries
    against libraries it depends on).  Code by Richard Braakman
    <dark@xs4all.nl> and Yann Dirson <dirson@debian.org>.
  * debian/rules: remove all reference to the packaging manual as it is
    now provided by the separate "packaging-manual" package. [#21581,
    #21186, #22698, #23342]
  * debian/rules: link dpkg-divert.1.gz to undocumented.7.gz as the lack
    of a real manpage has been reported in #11093.
  * debian/README.compile: removed gawk and bogus comment about gettext
    being in experimental, as reported by Santiago Vila <sanvila@unex.es>
    [#23344].  Added libpaperg (debiandoc2ps needs paperconf).
  * debian/shlibs.default.i386: updated for glibc, reported by Herbert Xu
    <herbert@gondor.apana.org.au>. [#13140]
  * debian/control (dpkg-dev): depend on perl as POSIX (not a part of
    perl-base) is needed by most of the perl dpkg-* scripts, noticed by
    Joel Klecker <jk@espy.org>. [#22115]

 -- James Troup <jjtroup@comp.brad.ac.uk>  Wed, 24 Jun 1998 14:38:52 +0200

dpkg (1.4.0.23.2) frozen unstable; urgency=low

  * Non-maintainer upload.
  * dpkg/main.c: Turn --force-overwrite back on as default.

 -- James Troup <jjtroup@comp.brad.ac.uk>  Tue, 23 Jun 1998 22:19:26 +0200

dpkg (1.4.0.23.1) frozen unstable; urgency=low

  * No real changes, only a new version code to make this go to frozen too.

 -- Nils Rennebarth <nils@debian.org>  Wed, 10 Jun 1998 17:29:58 +0200

dpkg (1.4.0.23) frozen unstable; urgency=low

  * Non-maintainer bug-fix release
  * Update the disk method to the hamm directory structure (Bug#21000)

 -- Nils Rennebarth <nils@debian.org>  Sun,  7 Jun 1998 19:14:51 +0200

dpkg (1.4.0.22) frozen unstable; urgency=medium

  * Non-maintainer bug-fix release
  * Install main changelog file as `changelog.gz' instead of
    `changelog.dpkg.gz' (Debian Policy, section 5.8) (Bug#6052,15157)
  * Avoid use of /tmp/*.$$ in preinst and postinst (Bug#19712)
  * Make sure diversions file is always created with mode 0644 (Bug#19494)
  * When removing a file, chmod it to 000 if it's a char or block
    device or remove its s[ug]id bits, if any (Bug#6006)
  * Minor fixes in the programmer's manual (Bug#6206)
  * Always create readable status and available files
    (Bug#9869,11887,14636,15786,19146)
  * Make dpkg-gencontrol honour -DArchtecture=xxxx (Bug#9893)
  * Allow different archs for the same binary in debian/files (Bug#9894)
  * Added workaround in /usr/lib/dpkg/methods/disk/setup
    to avoid bash warning (Bug#10111,10131)
  * Recognize old .deb packages with other locales (Bug#12232)
  * Added `SHELL=bash' to debian/rules: it uses bash-specific structs
  * Move some files from dpkg to dpkg-dev (part of Bug#13295)
  * Minor fix in packaging manual regarding to Standards-Version (Bug#14696)
  * Fixed --altdir and --admindir in update-alternatives (Bug#15332)
  * Strip /usr/lib/libdpkg* (Bug#15671)
  * dpkg: send output of --help, --force-help and -Dhelp to stdout
    (Bug#16051,18574)
  * send correct signals with start-stop-daemon (Bug#17258)
  * Make `dpkg-divert --test --remove' work as expected (Bug#19531)
  * Determine properly the architecture if gcc is egcs (Bug#20353)

 -- Juan Cespedes <cespedes@debian.org>  Sun,  5 Apr 1998 17:37:01 +0200

dpkg (1.4.0.21) unstable; urgency=low

  * Non-maintainer release to include a new update-rc.d
  * Fixed date on files in the archive from 2017 and 2018 by running
    touch foo; find . -newer foo | xargs -r touch; rm foo
  * Changed start-stop-deamon message "No <program> found; none killed." to
    "No <program> found running; none killed."

 -- Miquel van Smoorenburg <miquels@cistron.nl>  Thu,  5 Mar 1998 14:19:46 +0100

dpkg (1.4.0.20) unstable; urgency=low

  * Disabled --force-overwrites.
  * Removed core file from source

 -- Michael Alan Dorman <mdorman@debian.org>  Tue,  9 Jan 1998 03:34:28 -0500

dpkg (1.4.0.19) unstable; urgency=low

  * Changed methods/disk.setup to use output of
    'dpkg --print-installation-architecture' instead of hard-coded 
    '1386' (fixes #10995).
  * Patched dpkg-source to properly quote metacharacters in strings 
    before using them in pattern-matching expressions (fixes #10811).
  * Fixed several documentation typos (fixes #10764).
  * dpkg-source now works around 100-character filename limitation of cpio
    (fixes #10400).
  * dpkg-source now properly handles '\ no newline in source' message from
    patch (fixes #5041).
  
 -- Klee Dienes <klee@debian.org>  Sun, 13 Jul 1997 19:28:22 -0700

dpkg (1.4.0.18) unstable; urgency=low

  * dpkg-source now uses new -z option to GNU patch (still needs to be
    changed to detect and use old version as well) (fixes #9904, #10005, #10007).
  * Added i686 to archtable.
  * shlibs.default now uses xlib6 instead of elf-x11r6lib (fixes #9926).
  * debian-changelog-mode now uses interruptible completing type-in fields
    instead of the previous 'select-a-letter method'.  I consider this
    better and more standard than the previous way, but I'd welcome
    opinions to the contrary.  Consider this a 'probationary' change for
    now (fixes #9873, #9874).

 -- Klee Dienes <klee@debian.org>  Sun, 25 May 1997 09:56:08 -0400

dpkg (1.4.0.17) unstable; urgency=low

  * All of the dpkg binaries (but not dpkg-dev or dselect) now speak
    french, thanks to patches from Christophe Le Bars <clebars@teaser.fr>
  * Fix leading spaces before day in 822-date.
  * Changes from Tom Lees <tom@lpsg.demon.co.uk> to better support
    building on non-Debian systems; minor Makefile fixes.
  * Added 'ppc powerpc powerpc' to archtable.
  * Changed documentation paper size to US/Letter instead of A4 (A4
    may be better, but it's easier to print US/Letter on A4 than it is 
    to print A4 on US/Letter).
  
 -- Klee Dienes <klee@debian.org>  Tue,  13 May 1997 15:24:31 -0400

dpkg (1.4.0.16) experimental; urgency=low

  * Added generated sources to GNU-format source archive so it no longer
    requires perl to build.

 -- Klee Dienes <klee@debian.org>  Sat, 10 May 1997 17:34:29 -0400

dpkg (1.4.0.15) experimental; urgency=low

  * Changed dpkg-genchanges to check for ($arch == $substvar{'Arch'}), not
    ($arch ne 'all') (fixes #9688).
  * Fixed bug in start-stop-daemon.c (was using optarg after argument
    parsing was over) (fixes #9597, #9603, #9364).
  * Provide 50dpkg-dev.el for xemacs as well as emacs.
  * Explicitly provide path for debian-changelog-mode in 50dpkg-dev to use
    .el file as workaround until xemacs can read emacs19 .elc files.
  * Pass top_distdir explicitly to 'make dist' to accommodate bug in
    automake_1.1o-1.
  * Fix debian/build to make html documentation without including
    directories in tar archives (fixes #9348).
  
 -- Klee Dienes <klee@debian.org>  Fri,  9 May 1997 13:17:18 -0400

dpkg (1.4.0.14) experimental; urgency=low

  * Fixed buglet in install-info.pl (fixes #9438).
  * Re-write of update-rc.d.pl, primarily by Miquel van Smoorenburg
    <miquels@cistron.nl> (fixes #9434, #9436).
  * Renamed "dpkg Programmer's Manual" to "dpkg Internals Manual".
  
 -- Klee Dienes <klee@debian.org>  Tue,  6 May 1997 22:01:07 -0400

dpkg (1.4.0.13) experimental; urgency=low

  * Fix to start-stop-daemon so that it still takes numeric arguments (had
    been broken in 1.4.0.12) (fixes #9598).
  * Fix 822-date to sanity-check localtime() output (seconds must be the
    same as GMT).
  * Patch from Guy Maor <maor@ece.utexas.edu> to dpkg-source.pl to support
    pristine (MD5-equivalent) upstream sources.
  * Patch from Michael Alan Dorman <mdorman@calder.med.miami.edu> to
    update-rc.d.pl to fix handling multiple start/stop entries on a single
    line.
  * Several fixes to dpkg-genchanges to support -B option (added in
    1.4.0.12) (fixes #9340).
  * Handle errors from 822-date in debian-changelog-mode.el.
  * Changed cl-debian.pl to correctly handle extra whitespace in changelog
    datestamps.

 -- Klee Dienes <klee@debian.org>  Mon,  5 May 1997 18:12:43 -0400

dpkg (1.4.0.12) experimental; urgency=low

  * Re-wrote 822-date for clarity and to support timezone offsets >= 12h
    (New Zealand in DST is +1300, for example) (fixes #7130).
  * Patch from Juergen Menden <menden@morgana.camelot.de> to support
    archdependent-only builds (fixes #8912, #9245, #5359).
  * Fix archtable entry for powerpc (fixes #8794).
  * Strip /sbin/* and /usr/sbin/* in debian/rules (fixes #8853).
  * Moved start-stop-daemon to /sbin (fixes #8669).
  * Set sharedstatedir and localstatedir for $(MAKE) install in
    debian/rules (fixes #8852).
  * Fixes for update-rc.d(8) from Jim Van Zandt <jrv@vanzandt.mv.com>
    (fixes #8576).
  * No longer do variable substitutions when generating change file (fixes
    #5862).
  * Support symbolic signal names in start-stop-daemon (fixes #7715).
  * Add autoload for debian-changelog-mode to /etc/emacs/site-start.d
    (fixes #4519, #5841).
  * Add recommendation for gcc and make in dpkg-dev (gcc is needed for dpkg
    --print-architecture, used by dpkg-gencontrol; make is needed for any
    debian/rules file) (fixes #8470).
  * Minor changes to packaging manual section on source package
    conversion (fixes #6801).
  * Renamed "programmer's manual" to 'packaging manual'.
  * Start of new "programmer's manual" containing information on dpkg
    internals and build information.  This manual uses the new
    TeXinfo-SGML format, currently included in doc/.
  * dselect/pkgdepcon.cc now checks for debug not NULL, not just depdebug.
  * Changed makefiles to support building outside of source directory.
  * Include GNU-format source distribution with other non-debian packages.

 -- Klee Dienes <klee@debian.org>  Sun,  4 May 1997 11:08:19 -0500

dpkg (1.4.0.11) experimental; urgency=low

  * Patches for alpha and libc6 from Michael Alan Dorman
    <mdorman@calder.med.miami.edu>.
  * Fixed minor problems in dpkg-shlibdeps regular expressions for libc6.
  * Fix regex to detect directory creation in dpkg-source.pl.
  * Minor changes for automake-1.1n.

 -- Klee Dienes <klee@debian.org>  Sun, 23 Mar 1997 18:09:33 -0500

dpkg (1.4.0.10) unstable; urgency=medium

  * Fixed bug in controllib.pl (@fowner was entire passwd entry,
    not just [uid, gid] as it should have been).

 -- Klee Dienes <klee@debian.org>  Thu, 20 Mar 1997 13:06:52 -0500

dpkg (1.4.0.9) unstable; urgency=low

  * Check fputs() return values for (ret >= 0), not (ret != 0) (fixes #7522).
  * dpkg-shlibdeps no longer gives error for Java and statically linked
    binaries (fixes #4988).
  * Change 'details of the old format' to 'details of the new format' in
    deb-old.5 (fixes #7605).
  * dpkg-source -b now warns (was previously silent) if maintainer changes
    create new subdirectories.  dpkg-source -x now warns (previously gave
    error) if maintainer changes create new subdirectories (partially
    fixes #6866, #6671, #5045, #6482).    
  * Added manual page for start-stop-daemon (8). 
  * Added C version of start-stop-daemon by 
    Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl> (fixes #1670).
  * Converted to use GNU automake for the build process by Tom Lees 
    <tom@lpsg.demon.co.uk>.<
  * Preliminary support for dpkg functions as a shared library (now
    provides libdpkg.so, but much work needs to be done in better
    segregating and defining the interface).
  * Preliminary internationalization support by Galen Hazelwood
    <galenh@debian.org>.  Only the library, dpkg-deb, md5sum, and dpkg
    have been converted so far.  No translations have yet been
    constructed.
  * Handle 'libc.so.6 => /lib/libc.so.6 (0x40010000)' format from libc6
    ldd (fixes #7603, #7926, #8688, #9179, #9134, #8516).
  * Removed policy.sgml (it has been moved to the debian-policy package).
  * Include patch from Darren Stalder <torin@daft.com> for
    dpkg-buildpackage to choose PGP key based on Maintainer: field of 
    package being built (or -m<maintainer> option, if present) (fixes 
    #7898).
  * Changed controllib.pl to use $ENV{LOGNAME}, getlogin(), and $<
    (in that order) to determine the intended ownership of 
    debian/{files,substvars},  (fixes #7324, #6823, #5659, #5965, #5929,
    #9239, #5366).
  * Don't sign .dsc file in dpkg-buildpackage if building a binary-only
    release (fixes #7260).
  * Updated developer-keys.pgp to latest revision (fixes #6134).
  
 -- Klee Dienes <klee@debian.org>  Mon, 17 Mar 1997 16:11:24 -0500

dpkg (1.4.0.8) unstable; urgency=medium

  * Corrected update-rc.d for bash 2.0
  * Updated developer-keys.pgp from
    http://www.iki.fi/liw/debian/debian-keyring.tar.gz

 -- Guy Maor <maor@ece.utexas.edu>  Mon, 3 Feb 1997 04:05:01 -0600

dpkg (1.4.0.7) stable unstable; urgency=HIGH

  * Fixed --assert-support-predepends failing between unpack & configure.
  * Added --assert-working-epoch option.

 -- Guy Maor <maor@ece.utexas.edu>  Sat, 25 Jan 1997 23:02:11 -0600

dpkg (1.4.0.6) stable unstable; urgency=high

  * Patched lib/vercmp.c to hopefully fix dselect epoch processing
    (Bug#6204), (Bug#4590).
  * Patched scripts/dpkg-buildpackage, scripts/dpkg-genchanges,
    scripts/dpkg-gencontrol for epoch processing, courtesy of Loic Prylli 
    <lprylli@graville.fdn.fr> (Bug#6138, Bug#5225).
  * Patched dpkg-genchanges to actually honor the -u switch to specify
    directory (Bug#5564).
  * Applied patch to main/archive.c to correct problems setting set[gu]id
    binaries, courtesy of Herbert Xu <herbert@greathan.apana.org.au>
    (Bug#5479). 
  * Applied patch to dpkg-source to correct debian-only package names,
    courtesy of Guy Maor <maor@ece.utexas.edu> (Bug#5355).

 -- Michael Alan Dorman <mdorman@calder.med.miami.edu>  Thu, 2 Jan 1997 11:36:09 -0500

dpkg (1.4.0.5) stable frozen unstable; urgency=medium

  * Distribution for frozen too.

 -- Heiko Schlittermann <heiko@lotte.sax.de>  Thu, 5 Dec 1996 09:13:42 +0100

dpkg (1.4.0.4) stable unstable; urgency=medium

  * Bug2962 fixed: patch from Ian Jackson applied
    (cursor keys won't work after search)
  * Manuals 2.1.2.2

 -- Heiko Schlittermann <heiko@lotte.sax.de>  Fri, 15 Nov 1996 20:21:18 +0100

dpkg (1.4.0.3) unstable; urgency=medium

  * dpkg-source -x: created bad permissions (set x-bit for
    all files pointed to by a symlink)

 -- Heiko Schlittermann <heiko@lotte.sax.de>  Fri, 18 Oct 1996 18:32:06 +0200

dpkg (1.4.0.2) unstable; urgency=medium

  * dpkg-buildpackage.sh: reverted the quoting change -- (you
    should use super, sudo, really, but not su.  Or write a wrapper
    around su)
  * dpkg-buildpackge.sh: passing -m, -C, -v options to dpkg-genchanges
    more the way Ian likes ;-)
  * dpkg-source.pl: new function deoctify() as replacement for eval()
    (turn \ddd into the corresponding character) [rem: probably better
    solution would be to convert cpios output names into complete \ddd 
    representation as well tars output names] 
  * dpkg-source.pl: fixed 2 typos in failure message on creating 
    $origtargz.tmp-nest.
  * main/main.c: typo `tread' -> `treat'
  * main/enquiry.c: fixed the ignorance for some relations in --compare-versions
  * main/enquiry.c: missing version is now handled as described in `dpkg --help'
    (or at least as I understood `dpkg --help' PLEASE TRY IT)
  * lib/parsehelp.c: fixed parsing of epoch information

 -- Heiko Schlittermann <heiko@lotte.sax.de>  Sun, 6 Oct 1996 23:27:47 +0200

dpkg (1.4.0.1) unstable; urgency=medium

  * dpkg-source: doesn't get screwed up from hardlinks
    in the archive now
  * dpkg-source: doesn't get screwed up from `unprintable' characters
    in file names (e.g. from the kbd package) 
  * controllib.pl: $varlistvile -> $varlistfile (thanx Karl Sackett)
  * dpkg-buildpackge: quoting for $rootcommand (thanx  Michael Meskes)
    and `eval' as default $rootcommand
  * dpkg-*, controllib.pl: created debian/files and debian/substvars
    are chown'ed to `getlogin()' and its group
  * doc/: mv changed to mv -f
  * dpkg-buildpackage: added an option -a for overriding the
    architecture in the changes _file_name_
  * dpkg-buildpackage: pass -m* -v* .. options to dpgk-genchangelog
  * dpkg-name moved to dpkg-dev

 -- Heiko Schlittermann <heiko@lotte.sax.de>  Sat, 21 Sep 1996 22:06:01 +0200

dpkg (1.4.0) unstable; urgency=low (HIGH for new source format)

  * Corrected buffer overrun when dpkg-deb generates filename.  (Bug#4467.)
  * dpkg-shlibdeps works with DEBIAN/shlibs (thanks Heiko Schlittermann).
  * Added libm.so.5 to shlibs.default for i386/m68k.

  * Split binary package into two: dpkg and dpkg-dev.
  * dpkg-source(1) documents mode and ownership setting during extraction.

  * dpkg-scanpackages moved to /usr/bin.
  * Include /usr/bin/dpkg-deb, not dpkg-deb.dist; don't rename in scripts.
  * Copyright file changed slightly.
  * debian-changelog-mode uses magic key substitution strings.  (Bug#4419.)
  * Changed email address in control file to <ian@chiark.greenend.org.uk>.
  * Manuals and own Standards-Version: updated to 2.1.1.0.

 -- Ian Jackson <ian@chiark.greenend.org.uk>  Thu, 12 Sep 1996 01:13:33 +0100

dpkg (1.3.14) unstable; urgency=low

  * dpkg-buildpackage new -tc (clean source tree) option.

  * Formatted documentation removed by `make clean' and so not in source.
  * Manuals and own Standards-Version: updated to 2.1.0.0.
  * Distribute {policy,programmer}.{html.tar,ps}.gz with each upload.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sun, 1 Sep 1996 20:43:40 +0100

dpkg (1.3.13) unstable; urgency=low (HIGH for building new src X programs)

  * X shared libraries added to shlibs.default (=> `elf-x11r6lib').
  * dpkg-source tar invocation fixed so that TAPE env var doesn't break it.
  * dpkg-source copes better with missing final newline messages from diff.

  * dpkg-buildpackage usage message fixed: -si is the default.  (Bug#4350.)
  * dpkg-source error message about src dir mismatch typo fixed.  (Bug#4349.)

  * dpkg-source(1) has suggestions for dpkg-buildpackage -r option.
  * dpkg-source change date fixed.  (Bug#4351.)
  * More developers' keys.
  * Manual updates, own Standards-Version updated.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 31 Aug 1996 20:08:18 +0100

dpkg (1.3.12) unstable; urgency=medium

  * dpkg prints old version number when upgrading.  (Bug#4340.)
  * dpkg-deb tries to detect and flag corruption by ASCII download.

  * dpkg-genchanges and dpkg-buildpackage say what source is included.

  * dpkg-buildpackage passes +clearsig=on to PGP (or pgpcommand).  (Bug#4342.)

  * dpkg-source prints better error for cpio not honouring -0t.
  * control file Suggests cpio >= 2.4.2, rather than just cpio.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Fri, 30 Aug 1996 15:31:51 +0100

dpkg (1.3.11) unstable; urgency=low

  * EBUSY when dpkg removes a directory is only a warning.

  * dpkg-genchanges generates sensible warning (not confusing error
    about mismatch) for missing Section/Priority in binary packages.

  * Added dpkg --print-gnu-build-architecture option.
  * shlibs.default for m68k provided, as a copy of i386 version.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 29 Aug 1996 14:05:02 +0100

dpkg (1.3.10) unstable; urgency=medium

  * dpkg-source(1) manpage alias symlinks are not dangling.
  * dselect selects things by default if they are installed.
  * Added `pentium' as alias for `i386' architecture.
  * Added `Suggests: cpio, patch' and explanatory text to Description.
    (Bugs #4262, #4263.)

  * More developers' PGP keys.
  * Manual updates, new source format released.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Mon, 26 Aug 1996 14:30:44 +0100

dpkg (1.3.9) unstable; urgency=low (high for new source format)

  * dpkg --get-selections and --set-selections added.
  * New dpkg --force-not-root flag.

  * Don't replace directory with another package's file.  (Bug#4202.)

  * All manpages now installed compressed.
  * Copyright file moved to /usr/doc/dpkg/copyright.
  * Standards-Version updated (0.2.1.1).

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 24 Aug 1996 19:09:30 +0100

dpkg (1.3.8) unstable; urgency=low (high for new source format)

  * dpkg-buildpackage -sa, -si options work correctly.

  * update-rc.d(8) updated to reflect design and reality.
  * Programmers' and policy manual updates.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Fri, 23 Aug 1996 12:48:26 +0100

dpkg (1.3.7) unstable; urgency=low (medium for source pkg docs)

  * dselect +/-/_/= on lines for all broken, new, local or whatever
    packages do not affect _all_ packages.  (Bug#4129.)

  * Support for diff-only uploads in source packaging tools.
  * dpkg-genchanges -d<descripfile> option renamed to -C.
  * dpkg-buildpackage understands -m, -v, -C (for dpkg-genchanges).
  * Support for debian/shlibs.local added to dpkg-shlibdeps.
  * Shared library files' search order defined in dpkg-source(1), and
    relevant files added to the FILES section.

  * Programmers' manual describes source packaging tools.
  * Policy manual mentions shared library control area file.
  * dpkg-source manpage includes dpkg-shlibdeps in title line.
  * Manuals have changelog and automatic version numbering.
  * changelogs (for dpkg and for manuals) installed.
  * binary target split into binary-arch and binary-indep in manual.
  * Manpages should be compressed.
  * Copyright file is moved to /usr/doc/<package>/copyright.
  * Changelogs must be installed in /usr/doc/<package>.
  
  * dpkg-deb(8) moved to dpkg-deb(1).

  * binary target split into binary-arch and binary-indep in source.
  * changelog entry for 1.2.14 copied from that (forked) release.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 22 Aug 1996 15:36:12 +0100

dpkg (1.3.6) experimental; urgency=low (HIGH for new source format)

  * dpkg-source now has broken argument unparsing for tar.  (Bug#4195.)

  * dpkg-gencontrol writes to debian/tmp/DEBIAN/control by default.
  * dpkg-shlibdeps script added.

  * Back to old sh update-rc.d, and removed manpage, because new Perl
    version and the manpage have different syntax and semantics.
  * update-rc.d prints usage message for missing terminal `.'.  (Bug#4122.)

  * Use rm -rf instead of just rm -r in dpkg-deb --info &c.  (Bug#4200.)

  * Added support for Installed-Size to dpkg-gencontrol, and documented.
  * Source packaging substitution variables and name syntax rationalised.
  * dpkg-source scripts' usage messages improved slightly.
  * dpkg-source works with non-empty second (orig dir) argument.

  * Added rationale for copyright policy to manual.
  * More developers' PGP keys.
  * Control database handling cleanups (usu. Source field blanked).

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Tue, 20 Aug 1996 15:39:58 +0100

dpkg (1.3.5) experimental; urgency=low (high for debian-changelog-mode)

  * 822-date script included.  (Bug#4136.)
  * debian-changelog-add-version works on empty file.
  * debian-changelog-mode mode-help works properly.

  * dpkg-source tells patch not to make numbered backups.  (Bug#4135.)

  * More developers' PGP keys.
  * Paragraph on uucp -a and -g options removed from policy manual.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Wed, 14 Aug 1996 14:46:47 +0100

dpkg (1.3.4) experimental; urgency=low

  * Removed debugging output from dpkg-source -x.  Oops.
  * Removed section on source package permissions from policy manual -
    dpkg-source now sorts these out.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sun, 11 Aug 1996 13:25:44 +0100

dpkg (1.3.3) experimental; urgency=low

  * Programmers' & policy manuals in source tree; HTML in /usr/doc/dpkg.
  * Old guidelines.info and text files in /usr/doc/dpkg removed.

  * dpkg-source sets permissions on extracted debianised source tree
    and does not copy ownerships out of archive even if running as root.

  * Emacs mode `dpkg changelog' renamed to `Debian changelog'.
  * Default changelog format renamed from `dpkg' to `debian'.

  * debian-changelog-mode sets fill-prefix correctly.
  * debian-changelog-mode urgencies except HIGH lowercase by default.
  * debian-changelog-mode displays keymap in doc string and so mode help.

  * More maintainers' PGP keys.

  * Remove built changelog parsers with `clean' target in source.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 10 Aug 1996 23:35:51 +0100

dpkg (1.3.2) experimental; urgency=LOW (MEDIUM for dpkg-source)

  * Faster update-rc.d written in Perl by Miquel van Smoorenburg.
  * install-info --test doesn't lock dir.  (Bug#3992, thanks Darren).

  * dpkg-source doesn't break in the presence of any symlinks.

  * More developers' keys added to doc/developer-keys.pgp.
  * Install developers' keys in /usr/doc/dpkg/developer-keys.pgp.
  * dpkg-source documents undefined substvar behaviour.
  * minor debian/rules cleanups.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 10 Aug 1996 02:13:47 +0100

dpkg (1.3.1) experimental; urgency=LOW

  * manpage for dpkg-source et al now available.
  * dpkg-changelog-mode.el installed in site-lisp, but still no autoload.

  * dpkg-source prints correct string for not-understood tar -vvt output.
  * dpkg-source parsing of tar -vvt output made more robust.

  * dpkg-buildpackage prints usage message on usage error.
  * dpkg-gencontrol can print usage message.
  * -T<varlistfile> option added to dpkg-source.
  * Description of -f<fileslistfile> corrected in dpkg-distaddfile usage.
  * -m<maintainer> synopsis changed in dpkg-genchanges usage.
  * debian/substvars may now contain blank lines.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 8 Aug 1996 02:36:04 +0100

dpkg (1.3.0) experimental; urgency=LOW

  * dpkg can install named pipes.
  * dpkg-deb supports directory for destination, generates filename.
  * dpkg-{source,gencontrol,genchanges,parsechangelog,buildpackage},
    dpkg-distaddfile scripts to support new source package format.
  * a.out build no longer supported.
  * Changed to new source package format.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Tue, 6 Aug 1996 02:31:52 +0100


dpkg (1.2.14) stable unstable; urgency=MEDIUM

  * dselect +/-/_/= on lines for all broken, new, local or whatever
    packages do not affect _all_ packages.  (Bug#4129.)

  * NOTE - THE HISTORY FORKS HERE.  1.2.14's change appears in 1.3.7.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 22 Aug 1996 00:39:52 +0100


dpkg (1.2.13) unstable; urgency=LOW

  * dpkg --search produces correct output for diversions.
  * dpkg-name remove unnecessary arch missing warning.  (Bug#3482.)

  * dpkg-deb --build warns about uppercase chars in package name.

  * dpkg-scanpackages error messages updated and manpage provided
    (thanks to Michael Shields).
  * dpkg-scanpackages warns about spurious entries in override file.
  * dpkg-scanpackages `noverride' renamed to `override' everywhere.
  * dpkg-scanpackages field ordering to put Architecture higher.
  * dpkg-scanpackages field names capitalised appropriately.
  * dpkg-scanpackages invokes find with -follow.  (Bug#3956.)

  * guidelines say #!/usr/bin/perl everywhere, not #!/bin/perl.
  * Many developers' PGP keys added.

  * configure script uses ${CC} instead of $(CC) (again :-/).
  * developers' keys included in dpkg source tree and /usr/doc.
  * configure remade using autoconf 2.10-3 (was 2.4-1).

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 1 Aug 1996 02:46:34 +0100

dpkg (1.2.12); priority=LOW

  * dpkg --search and --list understand and comment on diversions.
  * dpkg-divert displays diversions more intelligibly.

  * Guidelines are somewhat clearer about descriptions.
  * deb(5) describes new format; old moved to deb-old(5).  (Bug#3435.)
  * deb-control(5) carries a warning about being out of date.

  * Added 1996 to dselect version/copyright.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 4 Jul 1996 15:04:49 +0100

dpkg (1.2.11); priority=MEDIUM

  * dselect had dependency bug if installed package newer than avail.
  * Added `replaces' to dselect's list of package relationship strings.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Mon, 1 Jul 1996 02:51:11 +0100

dpkg (1.2.10); priority=MEDIUM

  * Fixed bug in old-style version/revision number parsing.  (Bug#3440.)

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 29 Jun 1996 03:32:45 +0100

dpkg (1.2.9); priority=MEDIUM

  * Fixed status database updates reading bug.
  * `Setting up' message includes version number.
  * `existence check' message changed to say `cannot access archive'.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 27 Jun 1996 13:39:36 +0100

dpkg (1.2.8); priority=LOW

  * dpkg --record-avail puts data in Size field.
  * strip / for rmdir(2) in cleanup to work around kernel bug.  (Bug#3275.)
  * dpkg-split --msdos no longer allows `-' and other chars in filenames.

  * manual dpkg-split(8) written.
  * dpkg-split minor typo in --auto usage error message fixed.
  * dpkg-deb(8) very minor cosmetic fix to --build option.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Tue, 25 Jun 1996 03:00:14 +0100

dpkg (1.2.7); priority=LOW

  * dpkg-scanpackages syntax errors fixed.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Fri, 21 Jun 1996 04:10:38 +0100

dpkg (1.2.6); priority=MEDIUM

  * NFS, CDROM and partition dselect methods include mountpoint
    in paths given to dpkg in [I]install, so they should now work.

  * Removed some leftover files from source tree.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Wed, 12 Jun 1996 14:35:19 +0100

dpkg (1.2.5); priority=MEDIUM

  * Allow, but do not create, packages in half-installed state
    with no version number.  (Aargh.)

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Mon, 10 Jun 1996 04:55:43 +0100

dpkg (1.2.4); priority=MEDIUM

  * New dpkg-name from Erick (<pkg>_<version>_<arch>.deb convention).
  * Disappeared packages can't own conffiles any more !  (Bug#3214.)
  * install-info creates Miscellaneous sections with a newline
    following the heading.  (Bug#3218.)
  * cleanup-info script installed in /usr/sbin; called as appropriate
    by postinst.  Thanks to Kim-Minh Kaplan.  (Bug#3125.)
  * Allow superseded Essential packages to be purged after they've
    been removed (clear the Essential flag on removal, and ignore it
    on packages that are in stat_configfiles).

  * dselect disk methods understand `y' as well as `yes' for using
    development tree.
  * dselect doesn't make packages appear as `new' again if update
    of available packages fails.
  * dselect places method selection cursor over option last selected.

  * dpkg-scanpackages doesn't die when repeated packages are found.
  * dpkg-scanpackages allows many old maintainers (`//'-separated).

  * `Version' field is now mandatory (some operations already
    wouldn't work right anyway if it was't there).

  * update-rc.d(8) now says you must remove the script.  (Bug#3215.)
  * dpkg --force-help says that --force-overwrite is on by default.
  * dpkg-deb manpage rewritten.
  * debian.README (= /usr/doc/copyright/dpkg) edited slightly.

  * Some database parsing grunge removed (pdb_preferversion, &c).
  * Source tree doc/sgml contains some embryonic manuals.
  * Leftover files in lib directory in source tree deleted.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Mon, 10 Jun 1996 03:52:01 +0100

dpkg (1.2.3); priority=HIGH

  * install-info doesn't replicate section headings (Bug#3125, #2973).
  * New dpkg-name manpage broken off from script (oops!).
  * dselect help screens made consistent with new strings, flags, &c.
  * dselect error flag column labelled E (Error), not H (Hold).
  * `Escape' no longer bound to `exit list without saving' in dselect.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Tue, 28 May 1996 02:14:57 +0100

dpkg (1.2.2); priority=MEDIUM

  * Fixed dselect coredump found by Erick Branderhorst (thanks).
  * Sort obsolete removed packages separately, not under Available.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 23 May 1996 21:31:05 +0100

dpkg (1.2.1); priority=MEDIUM

  * `=' key in dselect really does `hold' rather than `unhold'.
  * dselect dependency processing now interacts better with `hold'.
  * dselect `I' key (not `i') modifies display of the info window.
  * dselect shows unavailable packages as being unavailable.
  * dselect main menu headings and many other strings changed to try to
    discourage people from deselecting every package and using [R]emove.
    Notably, `select' changed to `mark' throughout.

  * dselect disk methods now print a few fewer double slashes.
  * dselect disk access methods will offer to use dpkg --record-avail
    to scan the available packages, if no Packages file is found.

  * New dpkg --compare-versions option, for the benefit of scripts &c.
  * New dpkg --clear-avail option forgets all available packages info.
  * New dpkg --print-avail option, prints `available' data (from Packages, &c).
  * dpkg usage message is more informative, but no longer fits on screen.
  * dpkg --avail option renamed --record-avail.

  * Latest dpkg-name from Erick Branderhorst.
  * dpkg-scanpackages has more sensible problem reporting.
  * postinst configure now gets null argument (not <unknown> or <none>)
    when there is no previously configured version.

  * Guidelines say that postinst configure is given previous version.
  * Guidelines don't refer to maintainer-script-args.txt in main text.
  * Guidelines (Texinfo source) uploaded separately.

  * Own version of strcpy (used for debugging) removed.
  * Interface to access methods document in source (doc/dselect-methods.txt).
  * debian.buildscript moves changes file into parent directory.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Wed, 22 May 1996 01:26:31 +0100

dpkg (1.2.0); priority=MEDIUM

  * dselect can sort packages by available and installed states, and
    display their version numbers.  (Use O, o and V.)
  * Hold is properly integrated as a real `wanted state', rather than
    a separate flag.
  * Epochs in version numbers implemented, using the syntax
    <epoch>:<version>-<revision>.  (Epoch not usually displayed.)
  * dselect disk method is architecture-independent (uses dpkg's
    installation architecture, and looks in the right part of the tree).

  * dselect disk method doesn't try to satisfy the predependencies of
    packages which are on hold.
  * Fixed conflict-related assertion failure.  (Bug#2784.)
  * conffiles do not cause file conflicts if the conflicting package
    is in the `configuration only' state.  (Bug#2720.)
  * Fixed messages where available version number was reported as installed
    version in conflict and dependency messages.  (Bug#2654, Bug#2974.)

  * New format .deb files are default even for a.out compiles (but
    a.out version of dpkg is in old format).
  * Characters @:= (at colon equals) in package names now strictly
    forbidden everywhere (_ is still allowed in existing packages).
  * New dpkg --print-installation-architecture option prints installation
    architecture (compiled in), rather than build architecture (determined
    from gcc -print-libgcc-file-name).

  * Version messages show whether compiled a.out or ELF (i386 only).
  * Fixed missing space in version syntax error messages.
  * Manpage dpkg.8 installed with warning about inaccuracy.

  * Guidelines don't say to stop and restart daemons in runlevels 2345;
    instead they say to start in 2345 and stop in 016.
  * Guidelines and version messages say just Debian Linux.
  * Guidelines typo fix `"stop2' => `"stop"'.  (Bug#2867.)

  * doc/Makefile.in clean properly deletes various guidelines.info* files.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 16 May 1996 00:01:21 +0100

dpkg (1.1.6); priority=MEDIUM

  * Check virtual dependencies when removing (ouch! - thanks SDE.)
  * Fixed bug in internal database validity management that could
    make dselect and dpkg dump core.  (Bug#2613.)
  * Fixed two coredumping bugs when using local diversions.  (Bug#2804.)
  * Fixed disappearance of overwritten packages.  (Bug#2696.)
  * install-info won't modify dir file before start of menu.
  * install-info will create Miscellaneous heading if no sections yet.

  * Only alphanums and +-. allowed in package names - enforced by
    dpkg-deb --build and documented in Guidelines.
  * dselect doesn't display packages unless they are installed, selected
    or available.
  * dselect doesn't show spurious section and priority headings.
  * dselect has a few extra keybindings (from Lee Olds).
  * --force message changed to `--force enabled' so that default is OK.

  * dpkg-name now includes architecture component in .deb filename,
    and translates - in package name to _.
  * .deb file has architecture component in filename.

  * Guidelines changed to say Pre-Depends is for experts only.
  * Guidelines say to provide a unidiff (-u) rather than an old context diff.
  * Guidelines say 755 root.root for shared libraries.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Wed, 1 May 1996 00:47:22 +0100

dpkg (1.1.5); priority=MEDIUM (HIGH for diversions users)

  * Fixed coredump when using diversions.  (Bug#2603.)
  * Fixed typo in dpkg-divert which could lose diversions.  (Bug#2662.)

  * --force-overwrite is the default.
  * diversions.text provides better examples.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Wed, 10 Apr 1996 13:59:30 +0100

dpkg (1.1.4); priority=MEDIUM

  * Allow overwriting of conflicting packages being removed.  (Bug#2614.)

  * a.out control file says Pre-Depends: libc4 | libc.  (Bug#2640.)
  * ELF control file and libc dependencies changed to use finalised scheme.
  * ELF control file and libc dependencies for i386 only.  (Bug#2617.)

  * Guidelines say use only released libraries and compilers.
  * Install wishlist as /usr/doc/dpkg/WISHLIST.
  * Remove spurious entries for Guidelines in info dir file.

  * dpkg-deb --build checks permissions on control (DEBIAN) directory.

  * Spaces in control file fields not copied by dpkg-split.  (Bug#2633.)
  * Spaces in split file part control data ignore.  (Bug#2633.)

  * Portability fixes, including patch from Richard Kettlewell.
  * Fixed minor configure.in bug causing mangled GCC -W options.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Thu, 4 Apr 1996 01:58:40 +0100

dpkg (1.1.3); priority=LOW

  * dselect disk methods support Pre-Depends installation ordering.
  * When dpkg fails and --auto-deconfigure would help it says so.
  * dpkg --search output lists several packages with same file on one line.
  * Improved dpkg usage message somewhat.

  * dpkg-deb --build checks permissions and types of maintainer scripts.
  * dpkg-deb --build treats misspecified conffiles as error, not warning.
  * dpkg --print-architecture prints compiler's architecture while
    dpkg --version (&c) print system's arch (this to help cross-compiling).
  * More minor guidelines changes, including dir entry fixup.

  * configure script caches more values.
  * Changed maintainer email address to ian@chiark.chu.cam.ac.uk.

 -- Ian Jackson <ian@chiark.chu.cam.ac.uk>  Sat, 16 Mar 1996 19:18:08 +0000

dpkg (1.1.2); priority=LOW

  * Packaging guidelines installed properly (and as guidelines
    rather than debian-guidelines).
  * ELF version has more checks to stop you wrecking your dpkg installation.
  * dselect disk methods now look for a `local' tree as well, for
    people who want locally-available software of various kinds.
  * dpkg-divert has debugging message removed.
  * Minor guidelines changes.

  * Various makefile cleanups, mainly to do with ELF vs. a.out support.
  * debian.rules cleans out ~ files itself, as well as calling make clean.
  * debian.rules names .nondebbin.tar.gz file ELF too, if appropriate.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 14 Mar 1996 03:38:29 +0000

dpkg (1.1.1elf); priority=LOW

  * Added /usr/lib/dpkg/elf-executables-ok and elf-in-kernel.
  * Replaces field now allows automatic removal of conflicting packages.
  * Replaces field now required to overwrite other packages' files.
  * Architecture field, and dpkg --print-architecture, supported.
  * build new format archives by default when compiled with ELF compiler.

  * symlinks are now installed atomically (good for shared libraries).
  * create /var/lib/dpkg/diversions in postinst if necessary (Bug#2465.)
  * Pre-Depends now correctly fails if package never configured.
  * dselect disk methods mount with -o nosuid,nodev.
  * update-rc.d defaults doesn't add both K and S in any one runlevel;
    dpkg postinst fixes up this situation if it sees it.

  * Assorted fixups to the Guidelines, which are now in one piece.
  * dpkg --list prints version string in one piece.
  * dpkg-scanpackages doesn't produce notice on output with list of
    packages with Section and/or Priority control file fields.

  * control file and debian.rules work both for ELF and non-ELF compiles.
  * most files compiled with -O2 (-O3 only for some critical files) -
    this fixes ELF build.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 11 Mar 1996 04:25:28 +0000

dpkg (1.1.0); priority=LOW

  * dpkg supports Pre-Depends.
  * postinst script gets most-recently-configured version as $2.

  * lib/tarfn.c #includes <errno.h> (portability fix).

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 11 Feb 1996 21:07:03 +0000

dpkg (1.0.17); priority=LOW

  * dpkg --recursive follows symlinks (useful for devel tree).

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sat, 10 Feb 1996 15:58:46 +0000

dpkg (1.0.16); priority=LOW

  * dpkg-deb much faster reading new format archives.  (Bug#2256.)
  * Developers' documentation in /usr/doc/dpkg/, /usr/info/.

  * Fixed typo in control file Description.

  * configure script tries to improve matters wrt sysinfo.
  * any debian-tmp.deb is deleted by `./debian.rules clean'.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 4 Feb 1996 15:51:59 +0000

dpkg (1.0.15); priority=LOW

  * dselect disk methods should never unmount things they didn't mount.
  * debian.README aka /usr/doc/copyright updated.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 30 Jan 1996 15:05:39 +0000

dpkg (1.0.14); priority=MEDIUM

  * fixed file descriptor leak in dpkg introduced in 1.0.11.
  * included dpkg-name in this package (conflicts with dpkg-name).

  * redraw in dselect main menu changed to use clearok (like in lists).
  * sa_restorer in struct sigaction no longer used (portability fix).
  * removed Guidelines from source package.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 30 Jan 1996 02:52:29 +0000

dpkg (1.0.13); priority=MEDIUM

  * dselect partition and mounted methods work again.
  * dpkg-deb --no-act in usage message.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 26 Jan 1996 18:37:03 +0000

dpkg (1.0.12); priority=MEDIUM (HIGH for users of 1.0.11)

  * Fixed frequent dpkg coredump introduced in 1.0.11.  (Bug#2219.)
  * dpkg-deb ensures version numbers start with alphanumerics.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 24 Jan 1996 00:42:31 +0000

dpkg (1.0.11); priority=MEDIUM

  * corrected potentially serious problem with dpkg low-memory in-core
    files database.
  * dpkg-split --msdos puts output files in right directory.  (Bug#2165.)

  * diversions implemented - see `dpkg-divert --help'.

  * dselect shows and uses (for dependencies) currently installed
    version of a package if that is more recent.
  * dpkg --force-... options are in separate help screen.
  * better error messages for corrupted .deb archives.  (Bug#2178.)
  * dselect NFS method will unmount correct copy of NFS area if mounted
    twice.

  * removes some ELF compilation warnings.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 19 Jan 1996 02:41:46 +0000

dpkg (1.0.10); priority=MEDIUM

  * dpkg-deb option parsing unmuddled (-I option was removed
    in 1.0.9 and broke dpkg-deb).  (Bug#2124.)

  * dpkg-split will work when ELF `ar' is installed, and is faster.

  * nfs dselect method now available.
  * disk methods don't prompt spuriously for Packages files.
  * cdrom+harddisk methods can find Packages files.

  * dpkg-scanpackages (creates Packages files) now in /usr/sbin.

  * various changes to help compilation of dpkg-deb, dpkg-split
    and md5sum on non-Debian systems.
  * <sys/fcntl.h> replaced by <fcntl.h> throughout.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 14 Jan 1996 02:55:19 +0000

dpkg (1.0.9); priority=MEDIUM

  * dselect uninitialised variable coredump fixed (thanks Carl).

  * version numbers printed by --version fixed.  (Bug#2115.)
  * disk method problem with missing Packages files fixed.  (Bug#2114.)
  * dependency version relationships now <= >= << >> =.  (Bug#2060.)

  * install-info is in /usr/sbin, not /usr/bin.  (Bug#1924.)
  * dpkg regards Revision field as obsolete.

  * <asm/unistd.h> changed to <linux/unistd.h> (for m68k port).
  * scripts/Makefile.in `clean' target deletes scripts.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 11 Jan 1996 20:51:20 +0000

dpkg (1.0.8); priority=LOW

  * update-alternatives slightly more helpful message.  (Bug#1975.)
  * cosmetic improvements to disk installation method.  (Bug#1970,1956.)
  * mounted filesystem and unmounted partition separate methods.  (Bug#1957.)

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 12 Dec 1995 04:07:47 +0000

dpkg (1.0.7); priority=MEDIUM (HIGH to upgrade syslogd)

  * dselect harddisk/CDROM method script handles multiple package
    areas.
  * Everything has a manpage, though many are very unhelpful indeed.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 30 Nov 1995 03:59:14 +0000

dpkg (1.0.6); priority=MEDIUM (HIGH to upgrade syslogd)

  * conffiles can now be taken over properly from one package by
    another which replaces it.  (Bug#1482.)
  * dpkg will not deconfigure essential packages when --auto-deconfigure
    is set (this bug was fairly unlikely ever to be exercised).

  * dpkg checks for the presence of certain important programs on the PATH.
  * dselect is now more informative when a dependency is missing, saying
    "<package> does not appear to be available".  (Bug#1642, 1705).

  * `make distclean' fixed; config.* &c removed from source archive.
  * lib/lock.c now uses fcntl rather than flock, for better portability.

  * `Package_Revision: 0' removed from control file.
  * Some inaccuracies and bad formatting in various messages corrected.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 21 Nov 1995 20:15:18 +0000

dpkg (1.0.5); priority=LOW

  * dpkg-split allows some space for the header.  (Bug#1649.)
  * dpkg-split now has --msdos option for 8.3 filenames.
  * dpkg-split --join &c will not complain about trailing garbage.

  * dselect & dpkg will no longer ignore SIGHUP will running subprocesses.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 13 Oct 1995 13:59:51 +0100

dpkg (1.0.4); priority=MEDIUM (HIGH for dselect users with 1.0.3)

  * fixed bug which prevented dselect from displaying the bottom line of
    any listing screen.  This was introduced in 1.0.3, sorry !

  * a conffile will never cause a prompt if the package maintainer
    distributes a file identical to the user's, even if the file has
    been edited by both the user and the maintainer or is a
    newly-registered conffile.  (Bug#1639.)

  * dselect disk/cdrom method script says where to get Packages file.
  * dselect help has better descriptions of the functions of Return and Q.

  * postinst now warns about some problems with /usr/lib/dpkg/methods/hd.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 12 Oct 1995 01:45:38 +0100

dpkg (1.0.3); priority=MEDIUM

  * dselect: fixed segfault when doing some multiple (de)selections.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 10 Oct 1995 03:21:12 +0100

dpkg (1.0.2); priority=MEDIUM

  * problem with screen refresh after `o' (change order) corrected.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 9 Oct 1995 13:11:04 +0100

dpkg (1.0.1); priority=LOW

  * much better dpkg performance on low-memory systems.
  * start-stop-daemon --name should now work. (oops!)
  * fixed typo which could turn into memory overwriting bug sometime.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 8 Oct 1995 20:12:29 +0100

dpkg (1.0.0); priority=LOW

  * Version 1.0.0: dpkg is no longer beta.

  * tar extractor no longer looks up an empty string using getgrnam
    (this causes the libc to coredump when using NIS).

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 1 Oct 1995 13:07:36 +0100

dpkg (0.93.80); priority=LOW

  * dselect help screen intro changed to remove `much' before `help'.

  * update-alternatives.pl contains hardcoded ENOENT value, instead
    of requiring POSIX.pm to be present.

  * Makefiles changed to strip when installing instead of when building.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sat, 30 Sep 1995 01:44:12 +0100

dpkg (0.93.79) BETA; priority=LOW

  * DPKG_NO_TSTP environment variable which stops dpkg sending the
    process group a SIGTSTP (Bug#1496).
  * End key should work in dselect lists (Bug#1501).
  * various message typos (missing \n's) fixed (Bug#1504).

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 29 Sep 1995 03:27:01 +0100

dpkg (0.93.78) BETA; priority=LOW

  * dselect keystrokes help file typo fix.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 28 Sep 1995 20:31:02 +0100

dpkg (0.93.77) BETA; priority=MEDIUM

  * dpkg --remove --pending will purge things when appropriate.

  * fixed failure to null-terminate dpkg conflict problem messages.
  * fixed bug in formatting of dependency version problem messages.

  * Conffiles resolution prompt for new conffile: typo fixed.
  * Changed dpkg usage error to suggest `-Dhelp' instead of `--Dhelp'.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 20 Sep 1995 23:44:35 +0100

dpkg (0.93.76) BETA; priority=MEDIUM

  * dpkg --auto-deconfigure option (used automatically by dselect) allows
    `important' packages which many others depend on to be split.
  * dpkg should no longer fail an assertion during complicated
    multiple configurations involving packages which are on hold.

  * update-alternatives supports negative priorities.
  * /etc/alternatives is included in the .deb archive.

  * Package priorities changed: Required (Req), Important (Imp), Standard (Std),
    Optional (Opt) and Extra (Xtr).  For backward compatibility Base is an
    alias for Required, and Recommended is kept as a level just below Standard.

  * dselect shows introductory help screen when entering package lists (both
    main and recursive).
  * dselect help messages made more friendly.
  * dselect package list `quit, confirm, and check dependencies' key is
    now Return rather than lowercase `q'; likewise method list `select this
    one and configure it' key.
  * dselect selects packages with priority `standard' or better by default.
  * dselect `v=verbose' becomes `v=terse' when in verbose mode.

  * hard disk method unmounts /var/lib/dpkg/methods/mnt on failure.
  * disk methods' install message uses `stty' to find out what the
    interrupt character is, and uses that in the prompt (rather than ^C).
  * dpkg now tolerates ^Z characters in Packages files.
  * harddisk method doesn't display extra slash when updating packages file.
  * harddisk method burbles less if it doesn't have a good default.

  * dpkg-deb now supports new flexible format, but old format still default.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 20 Sep 1995 02:49:41 +0100

dpkg (0.93.75) BETA; priority=MEDIUM

  * dselect no longer segfaults when you try to modify the last item.

  * dselect Makefile compiles with -g, and links without -s, but installs
    with -s, so that built source directory has debugabble binary.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 12 Sep 1995 02:59:29 +0100

dpkg (0.93.74) BETA; priority=LOW

  * dpkg-split implemented and installed in /usr/bin/dpkg-split.
    (NB this is not compatible with Carl Streeter's old dpkg-split script.)
  * dpkg uses dpkg-split.
  * floppy disk method available - NB this is a first attempt only.

  * hard disk method uses --merge-avail rather than --update-avail.
  * installation by default of `standard' packages removed again.
    (I don't think this is the right place to do this.)
  * update-alternatives --remove correctly deletes all slave links;
    minor cosmetic improvements.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 11 Sep 1995 02:06:05 +0100

dpkg (0.93.73) BETA; priority=LOW

  * dselect multi-package selection now done by `divider' lines
    actually in the package list, rather than horizontal highlight
    movement.
  * dselect help available, and keybindings rationalised.

  * postinst removes /usr/lib/dpkg/methods/hd if upgrading from
    0.93.42.3 or earlier.
  * `hold' flag changed to be settable by the user only, and
    made orthogonal to the `reinstallation required' flag.
  * dpkg will install by default any packages with priority of
    `standard' or better unless they're explicitly deselected.

  * dselect dependency/conflict resolution will suggest marking absent
    packages for `purge' rather than `deinstall'.
  * disk method script produces message about invoking dpkg.
  * dpkg produces warning, not error, when it gets EPERM trying to
    remove a directory belonging to a package being removed.
  * dpkg, dpkg-deb usage error reporting improved.
  * dselect detects too-dumb terminals and stops.
  * dpkg-deb(8) updated a little (thanks to Bill Mitchell).

  * dselect debugmake script uses -O0.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 10 Sep 1995 12:23:05 +0100

dpkg (0.93.72) BETA; priority=MEDIUM

  * /usr/sbin/update-alternatives added.

  * New names for certain control file fields (old names work
    as aliases): Optional -> Suggests, Recommended -> Recommends,
    Class -> Priority.
     
 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 3 Sep 1995 16:37:41 +0100

dpkg (0.93.71) BETA; priority=LOW

  * dpkg doesn't silently overwrite `new' conffiles (Bug#1283).
  * case now not significant in Essential, Status and Class (Bug#1280).
  * dselect checks method scripts for execute, not for write.

  * spelling fixes in lib/dbmodify.c and dselect/helpmsgs.src.

  * dselect `clean' target deletes helpmsgs.cc and helpmsgs.cc.new.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 31 Aug 1995 13:56:08 +0100

dpkg (0.93.70) BETA; priority=MEDIUM

  * dselect unmounted harddisk method has many silly bugs fixed.

  * dpkg --root option restored (was removed by mistake in 0.93.68).
  * minor cosmetic change to dselect subprocess failure message.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 9 Aug 1995 22:18:55 +0100

dpkg (0.93.69) BETA; priority=MEDIUM

  * dpkg --configure and --remove should work properly when
    they have to defer processing (this tends to happen when many
    packages are processed at once).  (Bug#1209.)

  * dpkg --configure and --remove work better when `processing'
    several related packages with --no-act.

  * dpkg --auto is now two options, --pending or -a (for configure,
    remove, &c) and --recursive or -R (for install, unpack, &c).

  * dpkg debug options in usage message, and values available (-Dh).

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 9 Aug 1995 22:18:55 +0100

dpkg (0.93.68) BETA; priority=MEDIUM

  * dpkg won't get an internal error if you try to use the default
    conffiles response (ie, if you just hit return).  (Bug#1208.)

  * dselect hard disk and CD-ROM methods - the real thing, but ALPHA.

  * dselect allows you to go straight to `update' or `install' if
    you have already set up an access method.
  * new dpkg options --yet-to-unpack, --merge-avail and --update-avail.
  * dpkg -G is an abbreviation for dpkg --refuse-downgrade.
  * dpkg -R alias for --root withdrawn, pending reuse with different meaning.
  * dpkg --help message rationalised somewhat.

  * Obsolete `examples' and `dpkg-split' directories removed from
    source tree.  The `hello' package is a better example.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 7 Aug 1995 02:16:25 +0100

dpkg (0.93.67) BETA; priority=LOW for C dpkg alpha testers, HIGH for others

  * dpkg no longer statically linked and -g.
  * calls to abort() changed to print string, file and line number first.
  * removed unused variable from dpkg source.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 4 Aug 1995 01:39:52 +0100

dpkg (0.93.66) ALPHA; priority=MEDIUM

  * dpkg will correctly remove overwritten files from the lists of
    the package(s) that used to contain them.

  * dpkg --purge is now an action, rather than a modifier for --remove,
    and the -P alias for it is withdrawn.

  * dpkg --unpack/--install filenames in messages are now more sensible
    about when to use .../ (show as many trailing components as possible
    in 40 characters, or the whole path if that the last component is
    longer than that).

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 3 Aug 1995 02:11:03 +0100

dpkg (0.93.65) ALPHA; priority=MEDIUM

  * dpkg --remove should, when a package being removed is depended-on
    by another that is also queued for removal, defer the depended-on
    package rather than aborting it.  (Bug#1188.)

  * dpkg will not attempt to configure or remove a package more than
    once in the same run.  (Bug#1169.)

  * dpkg cosmetic fix to dependency problems message (this bug
    hasn't been triggered to my knowledge).

  * perl-dpkg no longer installed in /usr/bin.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 2 Aug 1995 13:02:58 +0100

dpkg (0.93.64) ALPHA; priority=MEDIUM

  * dpkg marks a package as no longer `to be configured in this run'
    when an error occurs, so that other packages which depend on it
    will fail (rather than causing a loop and an assertion failure,
     packages.c:166: failed assertion `dependtry <= 4').

  * dselect initial selection granularity is single-package.
  * dpkg --no-also-select option renamed to --selected-only (old option
    still accepted, but no longer in --help).  Changed -N to -O.

  * dselect `update' option changed to `install' (and other options
    renamed too).  NB: old access methods will not work, because
    the `update' script should now be an `install' script.

  * dselect `installation methods' renamed to `access methods'.
  * dpkg --skip-same-version and --refuse-downgrade produce friendlier
    messages when they skip packages.
  * --licence option now properly mentioned in all programs' --version
    messages.

  * bad fix for ELF compile problem involving myopt.h removed (compile
    problem turned out to be a GCC bug.)

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 1 Aug 1995 03:03:58 +0100

dpkg (0.93.63) ALPHA; priority=LOW

  * preinst works around shell bug/misfeature involving `trap'.

  * dpkg --skip-same-version doesn't skip packages which have
    an error flag set or which aren't in a standard `installed' state.

  * dpkg --search now does a substring search if the string doesn't
    start with a wildcard character (*, [ or ?) or slash.

  * problem with C/C++ linkage of stuff in "myopt.h" fixed, to help
    with compiling with GCC 2.7.0.

  * dselect Makefile.in `clean' deletes curkeys.inc &c, so that they are
    not shipped in the distribution source and will be rebuilt on the
    target system.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 27 Jul 1995 13:38:47 +0100

dpkg (0.93.62) ALPHA; priority=HIGH

  * dpkg purges leftover control scripts from /var/lib/dpkg/tmp.ci,
    rather than associating them with the wrong package.  (Bug#1101.)

  * dpkg won't `disappear' packages containing no files or directories,
    nor a package required for depends/recommended.  (Bug#1128.)

  * dpkg follows directory symlinks.  (Bug#1125.)

  * dselect fixups for ELF/GCC2.7.0 compilation.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 21 Jul 1995 21:43:41 +0100

dpkg (0.93.61) ALPHA; priority=LOW

  * dselect keybindings and status characters and descriptions changed
    (in pursuance of Bug#1037, user interface problems, still open.)

  * Some cleanups to fix mistakes discovered by ELF-GCC 2.7.0, and fixup
    for newer C++ draft standard (`for' variable declaration scope change).

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 18 Jul 1995 01:42:51 +0100

dpkg (0.93.60) ALPHA; priority=HIGH

  * dpkg doesn't think packages have `disappeared' if you install
    several packages at once.  (later reported as Bug#1132.)

  * usage error messages tidied up.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 16 Jul 1995 17:56:56 +0100

dpkg (0.93.59) ALPHA; priority=HIGH

  * dpkg doesn't break maintainer scripts &c if package `foo' exists
    when processing package `foobar'.  (Related to Bug#1101.)

  * dpkg implements `disappear' functionality.
  * dpkg/dselect remove dead entries from /var/lib/dpkg/status.

  * dpkg --list now sorted correctly and output somewhat improved.
  * some debugging messages moved from dbg_stupidlyverbose to dbg_scripts.
  * dpkg prints `Removing foo' message even if foo is not configured.
  * dpkg only prints `serious warning: files list file ... missing'
    once for each package.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 16 Jul 1995 02:32:11 +0100

dpkg (0.93.58) ALPHA; priority=HIGH

  * dpkg should write out status even for packages which it has only
    encountered in the `available' file so far.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 14 Jul 1995 20:19:21 +0100

dpkg (0.93.57) ALPHA; priority=LOW

  * dpkg does chroot when running maintainer scripts (--instdir
    should work right now, though I haven't been able to test it).

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 14 Jul 1995 01:32:30 +0100

dpkg (0.93.56) ALPHA; priority=HIGH

  * dpkg can now overwrite symlinks to directories, and will
    do correct handling of symlinks to plain files.
  * dpkg should not replace any directory with a symlink.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 13 Jul 1995 02:43:36 +0100

dpkg (0.93.55) ALPHA; priority=MEDIUM

  * dpkg can now extract hardlinks.
  * dpkg configuration/removal works in the presence of dependency cycles.
  * dpkg should no longer fail an assertion at processarc.c:193.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Wed, 12 Jul 1995 01:34:44 +0100

dpkg (0.93.54) ALPHA; priority=MEDIUM

  * dpkg and dselect no longer throw away all Class and Section
    information in /var/lib/dpkg/available.  (Oops.)
  * dpkg --refuse-<something> now works (this broke some dselect
    method scripts' attempts to use --refuse-downgrade).
  * dpkg --audit and --list implemented.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 10 Jul 1995 00:35:13 +0100

dpkg (0.93.53) ALPHA; priority=LOW

  * dpkg --install/--unpack only skips on-hold packages with --auto.
  * dpkg doesn't fclose() the --fsys-tarfile pipe twice.
  * dpkg error handling and reporting cleaned up.
  * dpkg now lists any failed packages/files just before exiting.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 9 Jul 1995 16:31:36 +0100

dpkg (0.93.52) ALPHA; priority=MEDIUM

  * dpkg won't segfault due to missing (Package_)Revision fields.
  * dpkg --search works.
  * dpkg will set execute permissions on scripts if necessary.
  * dpkg prints filenames in --unpack and --install.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sat, 8 Jul 1995 12:41:39 +0100

dpkg (0.93.51) ALPHA; priority=HIGH

  * dpkg --status and --listfiles now work.

  * dpkg --remove --auto won't try to remove everything (!)
  * dpkg --unpack doesn't coredump after unpacking the first package.
  * dpkg won't fail an assertion if it bombs out of --configure
    or --remove because of too many errors.

  * Support for `Essential' in dpkg (not yet in dselect).
  * `available' (Packages) file class and section override those
    from package control files.
  * `Essential: yes' added to control file.

  * Locking strategy changed, now uses flock (no more stale locks).
  * preinst now more helpful about conffiles upgrade problem.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sat, 8 Jul 1995 01:15:26 +0100

dpkg (0.93.50) ALPHA

  * C dpkg now in service.

  * dselect now installs in /usr/bin instead of /usr/sbin.
  * Improved `explanation of display' help and changed HSOC to EIOW.
  * dselect goes back to top of info display when you move the
    highlight.

  * Added <sys/types.h> to md5sum/md5.c, for the benefit of FreeBSD.
  * --admindir doesn't append `var/lib/dpkg' to its argument.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 19 May 1995 21:03:08 +0100

dpkg (0.93.42.3) BETA; priority=LOW

  * Rebuilt using ncurses 1.9.2c-0.
  * Silenced `subcritical error' message if errno == ENOENT.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 12 Jun 1995 13:09:24 +0100

dpkg (0.93.42.2) BETA; priority=HIGH

  * install-info --remove properly removes multi-line entries.
  * Slightly changed ^L redraw code in dselect package list.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sat, 10 Jun 1995 14:06:01 +0100

dpkg (0.93.42.1) BETA; priority=HIGH esp. for new installations

  * update-rc.d default no longer adds K entries in runlevels 2345.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 6 Jun 1995 18:56:23 +0100

dpkg (0.93.42) BETA; priority=LOW; HIGH for dselect users

  * Fix unitialised variable reference bug in dselect (#890).
  * Fix problem with wordwrapping package and method descriptions.
  * Create /var/lib/dpkg/methods/mnt.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 19 May 1995 21:03:08 +0100

dpkg (0.93.41) BETA; priority=LOW

  * Create /var/lib/dpkg/methods.
  * dpkg.pl noisily ignores --skip-same-version rather than barfing.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 16 May 1995 13:28:27 +0100

dpkg (0.93.40) BETA; priority=LOW

  * dselect's subprogram failure message made to stand out more.

  * When switching out of curses, always move the cursor to the
    bottom right corner of the screen.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Tue, 16 May 1995 01:03:38 +0100

dpkg (0.93.39) BETA; priority=LOW

  * dselect can now:
    - allow you to select and configure an installation method;
    - invoke installation method scripts to update the available file
      and unpack packages;
    - invoke dpkg to configure and remove packages.
    There are no installation methods available yet.

  * Search feature in dselect works (it was purely an ncurses bug).

  * dpkg-*.nondebbin.tar.gz now available (built by debian.rules).

  * The target directory for dpkg-deb --extract (also available as
    dpkg --extract) is no longer optional.  dpkg-deb suggests the use
    of dpkg --install if you omit it.

  * Added <errno.h> to lib/lock.c and fixed ref. to `byte' in
    md5sum/md5.c, for portability to Solaris 2.

  * Rebuilt `configure' and `config.h.in' using autoconf 2.3.
  * Revised function attribute support checking in configure script.
  * Removed obsolete `dselect.pl' from scripts directory.
  * New option --licence on all the C programs.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Sun, 14 May 1995 18:05:38 +0100

dpkg (0.93.38) BETA; priority=MEDIUM

  * Version number comparisons (in dpkg and dselect) now >= <=
    as documented (Bug#831; thanks to Christian Linhart).

  * dselect now has a non-superuser readonly mode.
  * dselect doesn't pop up unsatisfied `Optional's when quitting.
  * `unable to delete saved old file' message fixed dpkg_tmp to dpkg-tmp.

  * Made dpkg convert `revision' to `package_revision' when reading
    (eg) the `status' file.  libdpkg.a has `revision' as a synonym
    for `package_revision' and writes the former.

  * Major improvements and many changes to C option parsing, database
    management, error handling, Makefiles &c to support dpkg.
  * dpkg-deb should now work if sizeof(void*) < sizeof(void(*)()).

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Mon, 24 Apr 1995 12:34:39 +0100

dpkg (0.93.37) BETA; priority=LOW (MEDIUM for dselect users)

  * Fixed segfault if no description available (Bug#735);
    thanks to Peter Tobias for the bug report.
  * Fixed other assorted minor bugs in description displays.

  * Changed dpkg-deb --info short option from -i to -I, to make
    it unique across dpkg and dpkg-deb (-i still works with
    dpkg-deb for backwards compatibility).

  * Produce more sensible error when main package list is empty.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Fri, 7 Apr 1995 02:24:55 +0100

dpkg (0.93.36) BETA; priority=LOW (MEDIUM for dselect users)

  * All the C code (including dselect) updated to support `provides'
    (virtual packages).
  * Revamped dselect's related package selection/deselection
    algorithms.
  * Everything can now handle arbitrary `class' values (as well
    as the predefined ones which we understand and can interpret).
  * Fixed bug that prevented display update when moving down a small
    recursive package list in dselect.
  * Column heading characters corrected from `SHOC' to `HSOC'.

 -- Ian Jackson <iwj10@cus.cam.ac.uk>  Thu, 6 Apr 1995 12:48:13 +0100

dpkg (0.93.35) BETA; priority=MEDIUM

 * Preserve ownerships and permissions on configuration files.
 * Fix bug in conffile updating that could leave a hardlink
   <foo>.dpkg-new to the conffile <foo>.

 * Improved dselect's package list help messages.
 * Highlight now moves on after (de)selecting just one package.
 * Better algorithm for scrolling up/down when moving highlight.
 * Fixed bug in display of `preformatted' extended Description lines.
   (dselect is still ALPHA, but is fairly stable.)

 * Improved dpkg's message when configuring a package that doesn't
   exist, and when selecting or skipping a package that isn't
   currently selected (during unpack processing).

 * Description in control file expanded.

 * Scroll back to top when changing what is in the `info' area.

dpkg (0.93.34) BETA; priority=LOW (HIGH for dselect users)

 * dselect: Fixed bug which caused a coredump if you exited the
   package list if you'd made any changes.  Ouch !

 * dselect: Improved selection algorithm to show fewer extraneous
   packages; improved display for unavailable packages.

 * dpkg: Improved progress messages during unpacking somewhat.

dpkg (0.93.33) BETA; priority=LOW (HIGH for dselect users)

 * dselect now has a main menu.

 * Fixed nasty uninitialised data bug in dselect.

 * dselect now locks and unlocks the packages database.

Mon, 27 Mar 1995 03:30:51 BST  Ian Jackson <iwj10@cus.cam.ac.uk>

	* dpkg (0.93.32): Alpha dselect released and installed in
	                  /usr/sbin/dselect.
	* dpkg (0.93.32): Many portability enhancements: should now
	                  compile using GCC 2.6.3, and dpkg-deb should
	                  compile better on non-Linux systems.
	* dpkg (0.93.32): dpkg will not loop if its stdin disappears
	                  and it needs to prompt.
	* dpkg (0.93.32): Fixed removal dependency error to show
	                  correct package (Bug #648).
	* dpkg (0.93.32): Tidied up copyright notices.
	* dpkg (0.93.32): First draft of update-rc.d manpage, not yet
	                  installed in /usr/man.
	* dpkg (0.93.32): Changes to top-level Makefile.in to improve
	                  error trapping.
	* dpkg (0.93.32): Improved Makefile `clean' and `distclean'
	                  targets.
	* dpkg (0.93.32): Deleted irrelevant `t.c' from lib and
	                  dselect directories.
	* dpkg (0.93.32): Added vercmp.c with version comparison code.
	* dpkg (0.93.32): varbufextend message changed - varbufs not
	                  just for input buffers.
	* dpkg (0.93.32): varbuf has C++ member functions in header
	                  #ifdef __cplusplus.

Changes in dpkg 0.93.31:

* start-stop-daemon --pidfile now works (Bug#571).
* Fixed dependency processing bugs which could require a rerun of
  dpkg --configure (Bug#566).
* Fixed garbage output for `language' of control file in dpkg-deb --info.

Changes in dpkg 0.93.30:

* Added /usr/sbin/start-stop-daemon.

Changes in dpkg 0.93.29:

* Made postinst scripts really be run when dpkg --purge used.
* Added new --force-extractfail option - VERY DANGEROUS.

Changes in dpkg 0.93.28:

* Removed undef of 0x_p21 in read_database_file, which caused the
  the whole status database to become trashed when any update files
  were read.
* Make infinite-loop prevention and cycle detection work.
* Made findbreakcycle work (ie, break properly when cycle detected).
* New script, update-rc.d, to update links /etc/rc?.d/[KS]??*.
* dpkg.pl now sets the umask to 022.
* Cosmetic error message fix to dpkg-deb.
* Deleted OLD directory altogether.
* Improved error-trapping in top-level Makefile loops.

Changes in dpkg 0.93.27:

* Make version number specifications in Depends &c work.
* Added AC_PROG_CXX to autoconf.in for dselect.
* Changed myopt.h not to have cipaction field in cmdinfo (this was
  specially for dpkg-deb) - now we have a generic void*.
* Renamed `class' member of `pkginfoperfile' to `clas' [sic].
* Much work in `dselect' subdirectory.
* Deleted executables, objects and libraries from OLD tree !
* Minor changes to various copyright notices and top-of-file comments.
* Don't install nasty Perl dselectish thing as /usr/bin/dselect.

Changes in dpkg 0.93.26:

* Added --no-also-select instead of not auto-selecting on --unpack
  but doing so on --install; removed --force-unpack-any.

Changes in dpkg 0.93.25:

* Fixed duplicate output (failure to flush before fork) bug.
* More clarification of md5sum.c copyright.
* Corrected typo in ChangeLog in 0.93.24 source package.

Changes in dpkg 0.93.24:

* dpkg could copy conffiles info from one package to another.  Aargh.
  Bug #426.
* dpkg failed to initialise status if you tried to remove or
  configure a nonexistent package.  Bug #419.
* install-info now handles START-INFO-DIR-ENTRY entries like:
   * Gdb::                         The GNU debugger.
  Previously it would only accept (Bug #407):
   * Gdb: (gdb).                   The GNU debugger.
* When installing a new foo.info[.gz], install-info now replaces
   * Foo: (foo.info).              The Gnoo Foo.
  as well as just * Foo: (foo). ...
* Moved option parsing out of dpkg-deb into libdpkg.
* Assorted minor source code rearrangements.
* Fixed assorted copyright notices, clarified md5sum copyright.
* Corrected typo in 0.93.23 source package's ChangeLog.

Changes in dpkg 0.93.23:

* `dpkg-deb' --build now does a syntax check on the control file.
* `dselect' is now no longer called `debian', spurious copy removed
  from package top-level source directory.
* C control information parsing complete and somewhat tested.
* Moved `global' include files into $(srcdir)/include from ../lib,
  added some files to the lib Makefile, and arranged for pop_cleanup().

Changes in dpkg 0.93.22:

* Fixed bug which caused dpkg to see failures of md5sum where there
  were none (would also have caused dpkg to miss a real failure).
* Fixed failure to update some `status' database fields.

Changes in dpkg 0.93.21:

* Fixed error-handling bug which could corrupt database.

Changes in dpkg 0.93.20:

* Fixed bug which ran old (/var/adm/dpkg) postinst scripts.
* Fixed dpkg usage message which claimed -i => both --install & --info.
* Use Colin Plumb's MD5 code - faster, and better copyright.
* Manpages: dpkg-deb(8), deb-control(5), deb(5) - thanks to Raul
  Deluth Miller.  Also, an xfig picture of some C program innards.

Changes in dpkg 0.93.19:

* Don't delete the `list' file from the dpkg database.
* Fixed various bugs in the conffile handling.
* Conffiles that are symlinks will now be treated as if the
  `dereferenced' name of the file was listed in conffiles.  This means
  that /etc/foo -> /usr/etc/foo will cause all conffile updates of
  /etc/foo to create /usr/etc/foo.dpkg-tmp &c instead.  However, the
  link will be removed if --purge is used to delete all the conffiles.
* When doing a new installation, or when updating a conffile that
  wasn't listed as a conffile in the old version of the package, don't
  do any prompting but just install the version from the archive.
* Corrected error message if exec of dpkg --vextract failed
  and --instroot or --root specified.
* Added new --force-unpack-any option.
* Extra newline after --status output.
* Added -W options to CFLAGS.
* Fixed mistake in previous ChangeLog entry.

Changes in dpkg 0.93.18:

* Fixed invocation of dpkg-deb --vextract if --root or --instdir
  not specified.
* Create /var/lib/dpkg/updates.

Changes in dpkg 0.93.17:

* install-info --remove exits with status 0 if it doesn't find the
  thing to remove, instead of status 1.
* Error handling functions have __attribute__((format...)) if GCC.
* push_cleanup its arg takes void **argv instead of char **argv.
* Top-level Makefile.in has set -e before `for' loops.
* dpkg-deb --info not-an-existing-file produces fewer error messages.

Changes in dpkg 0.93.16:

* Made --root= option really extract to $instroot instead of `/'.
* install-info clears the 0444 bits in its umask.
* Fixed a few database handling bugs which cause dpkg always to fail,
  and usually to corrupt the status database in various ways.
* dpkg-deb completely rewritten, now doesn't tinker with
  /var/{adm,lib}/dpkg.  Should be faster.
* Directory structure and Makefiles in source package reorganised.

Changes in dpkg 0.93.15:

* Added `debian' (dselect), still very primitive.
* Database format changed, and moved from /var/adm to /var/lib.
* Added dpkg --avail mode, --list, --status and --search.
* Set of dpkg => dpkg-deb pass-through operations changed (but
  dpkg-deb not yet updated).
* Added --root, --admindir and --instdir, as well as --isok &c.
* Moved much stuff into /usr/lib/dpkg-lib.pl, rewritten status
  database handling.
* Put packages in `purge' state even if `deinstall' requested if
  they have no postrm and no conffiles.
* Version number comparisons fixed.
* insert-version.pl now installes lib.pl filename too.
* Strip trailing slashes when reading files from file lists.

Changes in dpkg 0.93.14:

* Fixed parsing of DEPENDS &c fields with trailing whitespace.
* postinst now fixes up broken ispell.control file.
* Cyclic dependency/multiple package removal processing: don't consider
  packages we've just removed when looking for a reason not to go ahead.
* Added call to postinst with `purge' argument for expunging old
  configuration etc. that aren't listed in conffiles.

Changes in dpkg 0.93.13:

* sub S_ISREG defined in dpkg.pl.
* Checking of DEPENDS &c fields was too lax, causing an internal error
  if you fed it certain kinds of broken control file.
* Fixed misleading message from bogus installationstatus call.
* New -u and -U options to dpkg-deb which don't unpack the /DEBIAN
  directory, and use these in dpkg.pl; clean up /DEBIAN in postinst.

Changes in dpkg 0.93.12:

* No longer needs *.ph files, since these appear to be broken.
* Postinst fixes up *.control files with curly brackets.
* embryo of dselect.

Changes in dpkg 0.93.11:

* New --ignore-depends option.
* This ChangeLog changed format here.

Wed Nov 30 15:38:21 GMT 1994  Ian Jackson  <iwj10@cus.cam.ac.uk>

	* dpkg 0.93.11 released.

	* conffile updating fixed.

	* Message `updgrade' in dpkg changed to `replace'.

	* install-info now copes with multi-line entries.

	* version numbers now done automatically in dpkg and install-info.

	* more debugging around conffiles updates.

	* *.hash files not deleted so soon.

	* adds brand new packages to status array so we can install them.

	* postinst does h2ph for {sys,linux}/{stat,types}.ph if required.

Mon Nov 28 02:00:13 GMT 1994  Ian Jackson  <iwj10@cus.cam.ac.uk>

        * dpkg 0.93.10 released.

        * dpkg.pl completely rewritten.

        * dpkg-deb: removed dabase-processing and --install option.

        * Makefiles reworked, debian.rules added.

        * Don't install anything in /usr/doc/examples.

        * dpkg-*.deb contains /usr/bin/dpkg-deb.dist, fixed up by postinst.

Thu Oct 20 13:22:20 1994  Ian Murdock  (imurdock@debra.debian.org)

        * dpkg 0.93.9 released.

        * dpkg.pl: Use $argument, not $package, with `--build'.
        Make sure that saved postinst scripts are executable.

Tue Oct 18 09:40:57 1994  Ian Murdock  (imurdock@debra.debian.org)

        * dpkg 0.93.8 released.

        * deb/remove.c (pkg_remove): Do not report an error from rmdir ()
        when `errno' is ENOTEMPTY (Directory not empty), because in this
        case we have found the highest-level directory in the package and
        are ready to exit the loop (i.e., it is a normal occurrence).

Mon Oct 17 10:44:32 1994  Ian Murdock  (imurdock@debra.debian.org)

        * Makefile.in: Adapted all Makefiles to the GNU Coding Standards.

        * deb/remove.c (pkg_remove): Make sure that parent directories are
        removed LAST!  This will result in complete removal of packages
        when --remove is called.  dpkg 0.93.7 (and earlier) had problems
        with this because it tried to remove directories in order, which
        will work most of the time, but not necessarily all of the time.

        * deb/list.c (pkg_list): Output is sorted by package name.

Tue Oct  4 12:27:10 1994  Ian Murdock  (imurdock@debra.debian.org)

        * deb/contents.c (pkg_contents): When a list file cannot be
        opened, silently fail and let the front-end explain the problem.

        * deb/util.c (return_info): When a control file cannot be opened,
        silently fail and let the front-end explain the problem.

        * deb/search.c (pkg_search): Exit 0 if the regular expression is
        matched and 1 if it is not.

Mon Oct  3 18:38:53 1994  Ian Murdock  (imurdock@debra.debian.org)

        * dpkg.pl: New file.  Replaces dpkg.sh.

        * deb/Makefile.in: Renamed `dpkg-util.deb' to `dpkg-deb'.

        * deb/build.c (pkg_build): `--build' is less verbose, instead
        letting the front-end add verbosity where appropriate.

        * deb/install.c (pkg_install): Ditto.

        * deb/remove.c (pkg_remove): Ditto.

        * deb/search.c (pkg_search): Ditto.

        * deb/describe.c (pkg_describe): `--describe' is less verbose,
        instead letting the front-end add verbosity where appropriate.
        The ``Description:'' label has been removed.

        * deb/version.c (pkg_version): `--version' is less verbose,
        instead letting the front-end add verbosity where appropriate.
        The ``Version:'' label has been removed, as has the maintainer
        information.

Mon Sep 12 14:22:04 1994  Ian Murdock  (imurdock@debra.debian.org)

        * deb/version.c (pkg_version): `--version' now reports the
        version number of dpkg if no argument is specified.

Thu Sep  1 13:31:37 1994  Ian Murdock  (imurdock@debra.debian.org)

        * dpkg 0.93.7 released.

        * deb/build.c (pkg_build): check status and exit if non-zero.

        * deb/contents.c (pkg_contents): ditto.

        * deb/install.c (archive_extract): ditto.

Thu Sep  1 13:20:08 1994  Ian Murdock  (imurdock@debra.debian.org)

        * deb/version.c (pkg_version): indent to the same point as
        pkg_describe.

Thu Sep  1 12:21:11 1994  Ian Murdock  (imurdock@debra.debian.org)

        * Makefile.in (dist): added debian.rules binary, source and
        dist targets to make final distribution easier to make.
        (install): install programs to /usr/bin.

        * deb/Makefile.in (install): install programs to /usr/bin.

        * deb/list.c (pkg_list): enforce a maximum limit of ten characters
        for the package name in the output.
        (pkg_list): left-justify the version number to make it easier for
        the front-end to parse the output.
        (pkg_list): replace first '\n' character in packages[n].description
        with '\0'.

        * deb/install.c (archive_extract): use the `p' option to `tar' to
        ensure that permissions are preserved.

Sat Aug 27 09:53:37 1994  Ian Murdock  (imurdock@debra.debian.org)

        * dpkg 0.93.6 released.

        * deb/util.c (return_info): only unlink CONTROL if ARCHIVE_FLAG is
        true!

Fri Aug 26 15:38:22 1994  Ian Murdock  (imurdock@debra.debian.org)

        * dpkg 0.93.5 released.

        * deb/contents.c (pkg_contents): merged function archive_contents
        into function pkg_contents.

        * deb/contents.c (pkg_contents): use lstat (rather than stat) so
        that symbolic links are recognized.
        (pkg_contents): print the usual `<path> -> <link_to>' now that we
        recognize symbolic links.

        * deb/util.c (return_info): create a FIFO to pipe the needed
        information to the ``formatter'' rather than creating a directory
        in /tmp for the package information, which is what we used to do.

Thu Aug 25 11:46:27 1994  Ian Murdock  (imurdock@debra.debian.org)

        * lib/fake-ls.c (mk_date_string): return a pointer to malloc'ed
        area.
        (mk_mode_string): ditto.

        * dpkg.sh: make sure the control information is extracted to a
        uniquely-named temporary directory during package installation.

        * dpkg.sh: execute the pre- and post-removal scripts during
        package removal.

        * dpkg.sh: exit immediately if dpkg-util.deb reports failure.

        * deb/install.c (pkg_control): make sure that `package' exists and
        is a Debian archive before doing anything.

        * deb/install.c (pkg_extract): make sure that `package' exists and
        is a Debian archive before doing anything.

        * deb/install.c (pkg_install): unlink `extract_output' when done.

        * deb/remove.c (pkg_remove): use lstat (rather than stat) so that
        --remove does not get confused and think that a symbolic link to a
        directory is actually a directory, which results in the symbolic
        link never being removed at all.

ChangeLog begins Thu Aug 25 11:46:27 1994 for dpkg 0.93.5.
