[7429cc]: ChangeLog Maximize Restore History

Download this file

ChangeLog    891 lines (620 with data), 36.2 kB

2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>

	mingw-get-0.1-mingw32-alpha-4 released.

	* All files (r0-1-alpha-4): Tag assigned.

2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>

	Add rudimentary help option.

	* README: Update release notes.

	* src/clistub.c: Add --help option.

2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>

	Fix "mingw-get deletes itself" bug in last rites handling.

	* README: Add new release notes.

	* configure.ac: Bump version to 0.1-alpha-4.

	* src/dmh.h: If __cplusplus, include <exception> and
	declare dmh_exception class.

	* src/dmh.cpp (class dmh_exception): Implement.
	(abort_if_fatal): If DMH_FATAL, throw dmh_exception rather
	than calling exit().

	* src/climain.cpp (climain): Wrap entire function body in try/
	catch block. If dmh_exception is caught, return EXIT_FAILURE.

	* src/clistub.c (main): Capture return value of climain(). If
	non-zero, perform last rites and return EXIT_FAILURE.

2010-08-30  Keith Marshall  <keithmarshall@users.sourceforge.net>

	mingw-get-0.1-mingw32-alpha-3 released.

	* README: Add new release notes.

	* All files (r0-1-alpha-3): Tag assigned.

2010-08-27  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add runtime hooks to support self-upgrade for future releases.

	* src/rites.c: New file; compile it free-standing, to provide...
	(lastrites.exe): ...this helper application for context clean-up;
	alternatively, use it as an include file, with pre-definition of...
	(IMPLEMENT_INITIATION_RITES): ...this, to implement...
	(pkgInitRites, pkgLastRites): ...these inline functions.

	* src/clistub.c (main) [argc > 1]: Use them.
	(progname): New local variable within `main'; set it once, then use it
	instead of repeated references to `basename(*argv)' in diagnostics.
	(MINGW_GET_DLL, MINGW_GET_GUI): Relocate to `src/rites.c'.

	* src/debug.h (DEBUG_INHIBIT_RITES_OF_PASSAGE):
	(DEBUG_FAIL_FILE_RENAME_RITE, DEBUG_FAIL_FILE_UNLINK_RITE): New
	defines; they facilitate debugging of the src/rites.c code.

	* Makefile.in (lastrites$EXEEXT): New target; build as prerequisite...
	(all): ...of this primary target.
	(install, install-strip): Install it.
	(SRCDIST_FILES): Remove install-sh; it is now included in...
	(build-aux): ...this directory; add it to...
	(SRCDIST_SUBDIRS): ...this.

2010-08-24  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Set default sysroots relative to mingw-get installation directory.

	* xml/profile.xml (system-map) [name == default]: For each of...
	[subsystem == mingw32]: ...set sysroot path to value of %R macro...
	[subsystem == msys]: ...and to its %R/msys/1.0 subdirectory.

2010-08-19  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Some dependency resolver enhancements and bug fixes.

	* src/pkgbase.h (pkgXmlNode::GetContainerAttribute): New method;
	declare it.

	* src/pkgdeps.cpp (pkgXmlNode::GetContainerAttribute): Implement it;
	it is used to retrieve package name attributes from the containing
	'package' element, when given a pointer to a 'release' element by...
	(assert_unmatched, assert_installed): ...these new static functions.
	(pkgXmlDocument::Schedule): Use them to reconstruct and register
	dependency reference data for previously installed packages which are
	no longer included in the distribution manifest.
	(pkgXmlDocument::ResolveDependencies): Fix a block nesting error;
	catch and diagnose unresolved dependencies; don't look beyond the XML
	document root node, (tinyxml error not caught?), when searching for
	requirements specified on container nodes.

2010-08-17  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Improve scheduling of package processing requests.

	* src/pkgexec.cpp (pkgXmlDocument::Schedule): Inspect entire `actions'
	list, when checking for duplicate package processing requests; decline
	to schedule any such duplicate, or any request which lacks a package
	association.

2010-08-15  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Lay foundation for selective compilation of debugging code.

	* src/debug.h: New file...
	* src/sysroot.cpp: Include it.
	(pkgXmlDocument::LoadSystemMap): Make debugging output conditional...
	[DEBUGLEVEL & DEBUG_TRACE_INIT]: ...on this new debugging state.

2010-08-15  Keith Marshall  <keithmarshall@users.sourceforge.net>

	* src/pkgkeys.h: Typo in comment: file was previously identified as
	pkgkeys.c; corrected.

2010-08-13  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Improve diagnostics for invalid references to non-release XML nodes.

	* src/pkgkeys.h (value_unknown): New global string; declare it.
	* src/pkgkeys.c (value_unknown): Implement it.

	* src/pkgname.cpp (pkgArchiveName): Identify XML element type when
	diagnosing references to elements of types other than release; use...
	(value_unknown): ...this, as appropriate.

2010-08-12  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Guard against a potential buffer overrun.

	* src/pkgreqs.cpp (pkgSpecs::SetProperty): Allocate an additional
	byte to accommodate an extra field separator, when inserting a new
	data value into a previously empty field.

2010-07-27  Cesar Strauss  <cestrauss@gmail.com>

	Handle the GNU long name tar header format.

	* src/pkgproc.h (TAR_ENTITY_TYPE_GNU_LONGNAME): New manifest constant;
	define it.
	(pkgTarArchiveProcessor::EntityDataAsString): New protected method;
	declare and...
	* src/tarproc.cpp: ...implement it.
	(pkgTarArchiveProcessor::Process): Before building the entry pathname,
	check for a GNU long name type header; when found, read pathname from
	the entry data area, before fetching the following header, from which
	to retrieve the associated entity data.

2010-06-24  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Work around an autoconf bug (reported by Stefano Sabatini).

	* Makefile.in (VPATH): Use @top_srcdir@ instead of ${srcdir}; current
	autoconf incorrectly elides references to @srcdir@ and ${srcdir} when
	substituting within a VPATH specification for building `in-source'.
	Also, prefer colons to blanks as path name separators, for improved
	portability to non-GNU implementations of make; (recommendation by
	Ralf Wildenhues).

2010-06-24  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Include alias search, when matching component package name.

	* src/keyword.c (has_keyword): Rearrange argument declarations for
	more natural order; update all callers accordingly.  Simplify; compare
	keyword to be matched with each successive candidate from match-list,
	character-by-character and in-place, so avoiding memory allocation
	for any local duplicate of the passed match-list; thus...
	(safe_strdup): ...this static function no longer required; delete it.
	(string.h): No references remain; do not include it.

	* src/pkgfind.cpp (pkgXmlNode::FindPackageByName): Augment component
	package name matching to include potential matches of the look-up name
	with trailing component name stripped off, when that matches the class
	name of an identified component package, and the initial substring of
	the look-up name, after stripping, matches any specified alias name
	for the containing package.

2010-06-10  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Address FIXME relating to identification of distributable files.

	* install-sh: Move to...
	* build-aux: ...this new directory.

	* Makefile.in (PACKAGE_DISTVERSION): Modify `sed' edit sequence; make
	it depend on, and ensure that it incorporates the expansion of...
	(PACKAGE_SUBSYSTEM): ...this new macro; defined as substitution of...
	(host_os): ...this autoconf variable, set by...

	* configure.ac (AC_CANONICAL_HOST): ...this; add it, requiring...
	(AC_CONFIG_AUX_DIR): ...`build-aux' directory reference, providing...

	* build-aux/config.guess, build-aux/config.sub: ...these new standard
	files; import them from the standard `build-aux' repository.

2010-05-17  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Bump version for next release cycle.

	* configure.ac (AC_INIT): Bump version suffix to alpha-3.

2010-05-17  Keith Marshall  <keithmarshall@users.sourceforge.net>

	mingw-get-0.1-mingw32-alpha-2 released.

	* README: Add new release notes.

	* xml/profile.xml: Update to use default referencing for...
	(package-list.xml.lzma): ...this repository master catalogue.

	* All files (r0-1-alpha-2): Tag assigned.

2010-05-12  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Make provision to protect user's profile settings during upgrade.

	* Makefile.in (install): Remove `profile.xml'; replace it with...
	(install-profile): ...this new prerequisite installation goal; it
	renames the installed copy of `profile.xml' as `defaults.xml', within
	the installed package image.

	* src/pkgkeys.h (defaults_key): New key; declare it.
	* src/pkgkeys.c: Some cosmetic formatting (tabulation) adjustments.
	(defaults_key): Implement it; it refers to the `defaults.xml' file.

	* src/climain.cpp (climain): Check `profile_key' for accessibility of
	the `profile.xml' file; if [! R_OK] emit a diagnostic warning, fall
	back on `defaults_key', and attempt to load configuration from the
	distributed `defaults.xml' file.

2010-05-11  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add preliminary support for future `-reinstall' option.

	* src/pkgexec.cpp (pkgActionItem::Execute) [ACTION_INSTALL]: Force
	installation if `-reinstall' option is selected, overriding state of
	any prior installation; temporarily assume that this option is always
	selected, to permit proper `upgrade' operation in the absence of any
	functional `uninstall' capability, and pending implementation of a
	mechanism for interpreting user specified options.

2010-05-11  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Correct handling for "%R" macro in relative sysroot path specs.

	* src/tarproc.cpp (pkgTarArchiveProcessor): In constructor, expand the
	sysroot path specification a second time, to capture the effect of any
	embedded macros, before computing the recorded `sysroot_len' value.

2010-05-05  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Handle "%" wildcard matches in package and subsystem version strings.

	* src/pkgbase.h (pkgSpecs): Forward declare it.
	(pkgActionItem::~pkgActionItem): Declare explicit destructor.
	(pkgActionItem::SetRequirements): Add extra `pkgSpecs*' argument;
	update references, passing additional argument in...

	* src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies): ...this.

	* src/pkgexec.cpp (pkgActionItem::~pkgActionItem): Implement it.
	(pkgActionItem::SetRequirements): Delete obsolete implementation.

	* src/pkginfo/pkginfo.h: Update copyright notice; add year 2010.
	(pkgSpecs::GetTarName): New public method; declare it.
	(pkgSpecs::SetProperty): New private method; declare it.
	(pkgSpecs::SetPackageName): New inline method; implement it.
	(pkgSpecs::SetPackageVersion, pkgSpecs::SetPackageBuild): Likewise.
	(pkgSpecs::SetSubSystemName, pkgSpecs::SetSubSystemVersion): Likewise.
	(pkgSpecs::SetSubSystemBuild, pkgSpecs::SetReleaseStatus): Likewise.
	(pkgSpecs::SetReleaseIndex, pkgSpecs::SetComponentClass): Likewise.
	(pkgSpecs::SetComponentVersion, pkgSpecs::SetPackageFormat): Likewise.
	(pkgSpecs::SetCompressionType): Likewise.

	* src/pkginfo/pkginfo.l: Update copyright notice; add year 2010.
	(TRANS): Interpret "%" as wildcard in version string matches.

	* src/pkgreqs.cpp: New file.
	(pkgActionItem::SetRequirements): Reimplement per new declaration;
	it now always allocates heap memory for requirements specifications.
	(pkgSpecs::GetTarName, pkgSpecs::SetProperty): Implement them.

	* Makefile.in (CORE_DLL_OBJECTS): Add `pkgreqs.$(OBJEXT)'.

2010-04-30  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Revert 2010-04-04 refactoring of tarproc.cpp and tarinst.cpp

	* src/tarinst.cpp: File removed; its content merged into...
	* src/tarproc.cpp: ...this; it cannot be cleanly separated out.

	* Makefile.in (tarinst.$OBJEXT): Remove reference.

2010-04-29  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Handle "*" wildcard matches in package and subsystem version strings.

	* src/vercmp.h (pkgVersionInfo::version_string): New private member
	variable; it stores a pointer to a dynamically allocated local copy of
	the invariant `version' argument, to facilitate correct parsing.
	(pkgVersionInfo::build_string): Likewise; it provides similar handling
	for the invariant `build' argument.
	(pkgVersionInfo::Free): New private inline method; it provides a NULL
	pointer safe wrapper, calling the C library `free()' function, (since
	some implementations are believed to be unsafe); it is used by...
	(pkgVersionInfo::~pkgVersionInfo): ...this new inline destructor, to
	release the memory allocated by the constructor, for `version_string'
	and `build_string'.

	* src/vercmp.cpp (pkgVersionInfo::pkgVersionInfo): Allocate memory for
	`version_string' and `build_string', as required; populate it.
	Explicitly handle "*" as a `match anything' wildcard...
	(pkgVersionInfo::Compare): ...matching it as `equal' to everything.

2010-04-18  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Correct omission from configure script prerequisite checks.

	* aclocal.m4 (MINGW_AC_OUTPUT): New macro; it wraps AC_OUTPUT itself,
	adding a trap to force an abort if any preceding prerequisite check
	was handled by MINGW_AC_ASSERT_MISSING.

	* configure.ac: Qualify package component types, in prerequisite
	checks handled by MINGW_AC_ASSERT_MISSING; invoke MINGW_AC_OUTPUT
	in place of AC_OUTPUT.

2010-04-17  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add configure script checks for prerequisite library headers.
	(Thanks to Cesar Strauss for proposing a rudimentary implementation).

	* aclocal.m4: New file; it does no more than include...
	* m4/missing.m4: ...this; new file incorporated from build-aux module.

	* configure.ac: Add AC_CHECK_HEADER assertions for...
	(zlib.h, bzlib.h, lzma.h): ...these; invoke MINGW_AC_ASSERT_MISSING in
	respect of each failing assertion.

2010-04-17  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Case-insensitive subsystem name matching revisited.

	* src/pkgfind.cpp (pkgXmlDocument::FindPackageByName): Use...
	(subsystem_strcmp): ...this to match subsystem names, instead of...
	(match_if_explicit): ...this.

2010-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Enable recursive processing of repository package lists.

	* src/pkgbase.h (pkgXmlDocument::SyncRepository): Make it public.

	* src/pkgbind.cpp (pkgRepository): New locally defined and implemented
	class; it facilitates recursive loading and parsing of package lists,
	replacing much of the original non-recursive functionality within...
	(pkgXmlDocument::BindRepositories): ...this; use it.

2010-04-04  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Implement installer function; use per-package file manifests.

	* src/pkgproc.h (pkgManifest): New class; declare it.
	(pkgArchiveProcessor::origin): New protected member variable.
	(pkgArchiveProcessor::sysroot_len): New protected member variable.
	(pkgArchiveProcessor::installed): Type changed to `pkgManifest *'.
	(pkgTarArchiveInstaller::Process): Declare specialisation hook.
	(pkgTarArchiveInstaller::UpdateInstallationManifest): Disused member
	function; remove redundant declaration from class definition.
	(pkgInstall): New generalised installation function; declare it.
	(pkgRegister): New function; declare it.

	* src/pkginst.cpp: New file.
	(pkgManifest, pkgInstall, pkgRegister): Implement them.

	* src/pkgexec.cpp (pkgActionItem::Execute): Use `pkgInstall' in place
	of stub formerly provided here.

	* src/pkgkeys.h (manifest_key, reference_key): New keys; declare them.
	* src/pkgkeys.c (manifest_key, reference_key): Implement them.

	* src/tarproc.cpp: Code refactored.
	(pkgTarArchiveProcessor::sysroot_len): Initialise it.
	(pkgTarArchiveProcessor::origin): Initialise it.
	(pkgTarArchiveProcessor::installed): Initialise; associate it with a
	pkgManifest class entity, and populate this as appropriate.
	(pkgTarArchiveProcessor::~pkgTarArchiveProcessor): Add explicit clean
	up of linked `pkgManifest *' entity referenced by `installed'.
	(pkgTarArchiveProcessor::Process) [TAR_ENTITY_TYPE_DIRECTORY]: Add
	braces to demarcate localised inner scope of string scan for removal
	of trailing directory name separators; (thanks to Cesar Strauss for
	reporting invalid local pointer declaration error in GCC >= 4.4).
	(pkgTarArchiveInstaller::UpdateInstallationManifest): Deleted.
	(pkgTarArchiveInstaller::pkgTarArchiveInstaller): Factor out.
	(pkgTarArchiveInstaller::ProcessDirectory): Likewise.
	(pkgTarArchiveInstaller::ProcessDataStream): Likewise.
	(commit_saved_entity): Likewise.

	* src/tarinst.cpp: New file; it implements...
	(pkgTarArchiveInstaller::Process): ...this new specialisation
	of the original pkgTarArchiveProcessor::Process method...
	(pkgTarArchiveInstaller::pkgTarArchiveInstaller): ...and this
	refactored code, abstracted from src/tarproc.cpp and modified to
	use the pkgManifest class for installation tracking.
	(pkgTarArchiveInstaller::ProcessDirectory): Likewise.
	(pkgTarArchiveInstaller::ProcessDataStream): Likewise.
	(commit_saved_entity): Relocated from src/tarproc.cpp.

	* Makefile.in (CORE_DLL_OBJECTS): Add...
	(pkginst.OBJEXT, tarinst.OBJEXT): ...these new object files.

2010-03-31  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Guard against NULL pointer dereferences in tinyxml code.

	* src/pkgbase.h (pkgXmlNode::GetName): Verify `this' pointer is
	non-NULL, before invoking the underlying tinyxml method.
	(pkgXmlNode::GetParent, pkgXmlNode::GetChildren): Likewise.
	(pkgXmlNode::GetNext, pkgXmlNode::GetPropVal): Likewise.
	(pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.
	(pkgXmlNode::GetDocumentRoot): Likewise.
	(pkgXmlNode::IsElementOfType): Likewise.

2010-03-28  Cesar Strauss  <cestrauss@gmail.com>

	Avoid running InternetAttemptConnect in pkgInternetAgent
	constructor, since it is called during DLL initialisation.

	* src/pkginet.cpp (pkgInternetAgent::pkgInternetAgent): Move the
	InternetAttemptConnect call from constructor...
	(pkgInternetAgent::OpenURL): ...to here.

2010-03-23  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Automate object code dependency tracking.

	* Makefile.in (DEPFLAGS): New macro; define it.
	(%.OBJEXT: %.c, %.OBJEXT: %.cpp): Add dependency generator commands...
	(%.d): ...to create these dependency maps; `sinclude' them, and...
	(clean): ...remove them.
	
	* .cvsignore (*.d): Add wild card template to match them.

2010-03-22  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Support case insensitive matching for file and subsystem names.

	* src/pkgbase.h (safe_strcmp): New inline function; it provides NULL
	argument safe comparison of strings, returning the boolean inverse of
	the `strcmp' result, using either case-sensitive or case-insensitive
	semantics; derive it from...
	(match_if_explicit): ...this; redefine as macro; invoke `safe_strcmp'
	using explicitly case-sensitive semantics.
	(subsystem_strcmp): New macro; it invokes `safe_strcmp' with either
	case-sensitive or case-insensitive semantics, depending on...
	(CASE_INSENSITIVE_SUBSYSTEMS): ...this new context selection macro; it
	fixes the choice between case-sensitive and case-insensitive matching
	semantics for any given implementation, at compile time.
	(pkg_strcmp): New macro; it invokes `safe_strcmp' with either
	case-sensitive or case-insensitive semantics, depending on...
	(CASE_INSENSITIVE_FILESYSTEM): ...this new context selection macro; it
	fixes the choice between case-sensitive and case-insensitive matching
	semantics for any given implementation, at compile time.

	* src/sysroot.cpp (pkgXmlNode::GetSysRoot): Use `subsystem_strcmp'.

2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add preliminary support for virtual packages.

	* src/pkgkeys.h (yes_value, no_value): Redefine as aliases...
	(value_yes, value_no): ...for these new global strings; declare them.
	(value_none, value_virtual): New global strings; declare them.

	* src/pkgkeys.c (yes_value, no_value): Rename...
	(value_yes, value_no): ...to implement these, respectively.
	(value_none, value_virtual): Implement them.

	* src/pkgname.cpp (pkgXmlNode::ArchiveName): Check containing package
	node for `class' attribute set to `value_virtual'; if present, always
	return the effective `tarname' property as `value_none'.

	* src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): For packages
	with an effective `tarname' of `value_none', do not download anything.

	* src/pkgexec.cpp (pkgActionItem::Execute): For packages with an
	effective `tarname' of `value_none', do not invoke any tar archive
	processing function.

2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Don't write installation records for unavailable packages.

	* src/tarproc.cpp (pkgTarArchiveInstaller): In constructor, ensure
	archive is ready for processing, before initialising an installation
	manifest record.

2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Rationalise path identification for XML file locations.

	* src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Use `xmlfile()'
	function to locate `sysroot' map file; free memory when done.
	(pkgXmlDocument::UpdateSystemMap): Likewise.
	(sigpath): Static global variable disused; delete it.

2010-03-01  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Extend package name search to include component packages.

	* src/pkgfind.cpp (pkgHasMatchingName): Remove; fold it into...
	(pkgXmlNode::FindPackageByName): ...this; augment to extend search
	within package definition elements, seeking a potential match on an
	included component package name or component class-implied name.

	* src/pkgkeys.h (class_key): New global string constant; declare it.
	* src/pkgkeys.c (class_key): Implement it.

2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Bump version for next release cycle.

	* configure.ac (AC_INIT): Bump version suffix to alpha-2.

2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>

	mingw-get-0.1-mingw32-alpha-1 released.

2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Prepare initial package release.

	* README: New file; use it to source release notes.

	* Makefile.in (SRCDIST_FILES): Use ...
	(LICENCE_FILES): ...this new macro; define it.
	(licdist): New build goal; implement it.
	(bindist): Require it; add alternative `zip' format package.

	* xml/profile.xml (repository): Set default `package-index' name.
	(system-map): Normalise spelling for default `sysroot' path names.

2010-02-10  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add directory/file records in installation manifests.

	* src/pkgkeys.h (dirname_key, filename_key): New strings; declare...
	* src/pkgkeys.c (dirname_key, filename_key): ...and implement them.

	* src/pkgproc.h (pkgArchiveProcessor::installed): New class member
	variable; declare it.
	(pkgTarArchiveInstaller::UpdateInstallationManifest): New method;
	declare it.

	* src/tarproc.cpp: Miscellaneous comment updates.
	(pkgTarArchiveInstaller): In constructor...
	(pkgTarArchiveInstaller::installed): ...use new member variable...
	(pkgArchiveProcessor::installed): ...inherited from this.
	(pkgTarArchiveInstaller::UpdateInstallationManifest): Implement and...
	(pkgTarArchiveInstaller::ProcessDataStream): ...use it.
	(pkgTarArchiveInstaller::ProcessDirectory): Likewise.

2010-02-06  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Work around a deficiency in Microsoft's stat() implementation.

	* src/tarproc.cpp (pkgTarArchiveProcessor::ProcessDirectory): Don't
	pass a `pathname' argument with trailing slashes; strip them off.

2010-02-06  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add machinery for installation and packaging for distribution.

	* install-sh: New file; source it from autoconf distribution.

	* configure.ac (AC_PREFIX_DEFAULT): Assign it as `C:/MinGW'.
	(AC_PROG_MKDIR_P, AC_PROG_INSTALL, AC_PROG_LN_S): Invoke these.
	(STRIP): New output variable; use AC_CHECK_TOOL to define it.

	* Makefile.in (abs_top_srcdir): Define to AC_SUBST value.
	(PACKAGE_TARNAME, PACKAGE_VERSION): Define to AC_SUBST values.
	(prefix, exec_prefix, bindir, libexecdir, localstatedir): Likewise.
	(INSTALL, INSTALL_PROGRAM, INSTALL_SCRIPT, INSTALL_DATA): Likewise.
	(STRIP): New macro; define it using AC_CHECK_TOOL substitution.
	(mkinstalldirs): New macro; define it as AC_PROG_MKDIR_P result.
	(LN_S): New macro; define it as AC_PROG_LN_S result.
	(dist, srcdist, bindist): New build objectives; implement them.
	(install, installdirs, install-strip, maintainer-clean): Likewise.
	(SRCDIST_FILES, SRCDIST_SUBDIRS): New macros; define them.
	(PACKAGE_DISTNAME, PACKAGE_DISTVERSION): Likewise.
	(PACKAGE_DISTROOT, PACKAGE_ROOTVERSION): Likewise.
	(PACKAGE_CONFIG_DIR): Likewise.

2010-02-02  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Implement package installer for tar archives.

	* src/pkgexec.cpp (pkgXmlDocument::Execute): Replace existing
	stub implementation of installer, using methods provided by...
	* src/pkgproc.h, src/tarproc.cpp: ...these new files, with trap...
	* src/pkgdeps.cpp (pkgXmlDocument::Schedule) [installed]: Add entry...
	(pkgActionItem::Selection) [to_remove]: ...for this; use it to detect
	`install' requests for packages which are aleady installed.

	* Makefile.in (CORE_DLL_OBJECTS): Add tarproc.$(OBJEXT); specify
	dependencies as appropriate.

	* src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Don't commit
	newly created `sysroot' mapping records to disk; defer to...
	(pkgXmlDocument::UpdateSystemMap): ...this new method.
	(sigpath): Make it a global variable, with file (static) scope.

	* src/climain.cpp (pkgXmlDocument::UpdateSystemMap): Invoke it.

	* src/pkgkeys.h (download_key, modified_key, source_key): New global
	string variables; declare them, providing their implementations...
	* src/pkgkeys.c (download_key, modified_key, source_key): ...here.
	* src/pkgname.cpp (download_key, source_key): Use them.

	* src/pkginet.cpp (pkgActionItem::ArchivePath): Delete; replace...
	* src/mkpath.c (pkgArchivePath): ...with this free standing function.
	* src/mkpath.h (pkgArchivePath): Declare its prototype.

	* src/pkgbase.h (pkgActionItem::ArchivePath): Delete declaration.
	(pkgXmlDocument): Add a default constructor; implement as `inline'.
	(pkgXmlDocument::AddDeclaration): Use heap memory to allocate the new
	declaration object, instead of `auto' variable, to avoid scope error.
	(pkgXmlDocument::UpdateSystemMap): Declare it.

2010-01-26  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Implement rudimentary dependency resolver.

	* src/pkgdeps.cpp: New file.

	* Makefile.in (CORE_DLL_OBJECTS): Add pkgdeps.$(OBJEXT) reference;
	establish header file dependencies.

	* src/pkgbase.h (to_remove, to_install, selection_types): New enum.
	(pkgActionItem::selection): Extend it to store as enumerated pair...
	(pkgActionItem::SelectPackage): New inline method; assign them.
	(pkgActionItem::Selection): New inline method; retrieve them.
	(pkgXmlNode::GetInstallationRecord): New method; declare it.

	* src/pkgexec.cpp (pkgActionItem): In constructor...
	(selection): ...initialise both references in enumerated pair.
	(pkgActionItem::GetReference): Use `Selection()' method.
	(pkgActionItem::SelectIfMostRecent): Ditto; also correct logic for
	making selection, and assign to `to_install' element.
	(pkgXmlDocument::Schedule): Don't update `request'.
	(pkgActionItem::Execute): Implement as stub.

	* src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): Use new
	`Selection()' method.

	* src/pkgkeys.h (yes_value, no_value): Declare new string constants.
	* src/pkgkeys.c (yes_value, no_value): Implement them.

	* src/vercmp.cpp: Update copyright notice.
	(pkgVersionInfo::operator<=): Bug fix; must test for `<', but had `>'.

2010-01-23  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Avoid segmentation faults when processing invalid data streams.

	* src/pkgstrm.h: Update copyright notice.
	(pkgArchiveStream::IsReady): New pure virtual method.
	(pkgRawArchiveStream::IsReady): Provide inline implementation.
	(pkgGzipArchiveStream::IsReady): Likewise.
	(pkgBzipArchiveStream::IsReady): Likewise.
	(pkgLzmaArchiveStream::IsReady): Likewise.
	(pkgXzArchiveStream::IsReady): Likewise.

	* src/pkgstrm.cpp: Update copyright notice.
	(pkgLzmaArchiveStream, pkgXzArchiveStream) [fd == -1]: Decline to
	perform any form of read or decode processing.

	* src/pkginet.cpp (pkgInternetLzmaStreamingAgent): Use `fd = -2' as
	pseudo-descriptor for the pkgLzmaArchiveStream derived component of
	this internet data streaming class.

2010-01-23  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Require liblzma >= liblzma-4.999.9beta_20091209-3-mingw32-dev

	* src/pkgstrm.h (LZMA_API_STATIC): Remove definition and associated
	comment; it was required to permit, (but not to enforce), linking to
	the static liblzma.a library, with earlier beta releases, but this
	anomaly has now been corrected.

2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Remove zlib sources from trunk.
	(Application builders should use free standing implementation of
	 zlib, from MinGW's package distribution page on SourceForge).

2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Remove bzip2 sources from trunk.
	(Application builders should use free standing implementation of
	 bzip2, from MinGW's package distribution page on SourceForge).

2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add subsystem specific sysroot mapping facility.

	* src/pkghash.c: New file; required by...
	* src/sysroot.cpp: New file; it implements...
	(pkgXmlDocument::LoadSystemMap, pkgXmlNode::GetSysRoot): New methods.

	* src/pkgbase.h: Update copyright notice.
	(pkgXmlDocument::LoadSystemMap): Declare it.
	(pkgXmlDocument::AddDeclaration): New inline method.
	(pkgXmlDocument::SetRoot, pkgXmlDocument::Save): Likewise.
	(pkgXmlNode::GetSysRoot): Declare it.
	(pkgXmlNode::GetDocumentRoot): New inline method.
	(pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.

	* src/climain.cpp: Update copyright notice.
	(climain): Invoke pkgXmlDocument::LoadSystemMap() as required.

	* Makefile.in (CORE_DLL_OBJECTS): Add ...
	(pkghash.$(OBJEXT), sysroot.$(OBJEXT)): ...these; upate dependencies.
	(DEBUGLEVEL): New macro; define it.
	(CPPFLAGS): Use it.

2010-01-16  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Assign standardised keys for XML database lookup.

	* src/pkgkeys.h: New file; provide public key declarations.
	* src/pkgkeys.c: New file; implement them.

	* src/pkgbind.cpp: Use them; update copyright notice.
	* src/pkgexec.cpp, src/pkgfind.cpp, src/pkginet.cpp: Likewise.
	* src/pkgname.cpp, src/pkgspec.cpp: Likewise.

	* Makfile.in (CORE_DLL_OBJECTS): Add pkgkeys.$(OBJEXT); update all
	dependencies accordingly.

2010-01-08  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add CLI version reporting option.

	* configure.ac: Update copyright notice for new year.
	(COPYRIGHT_HOLDER): New AC_SUBST variable; define it.
	(YEARS_OF_ISSUE): New AC_SUBST variable; define it.
	(AC_CONFIG_FILES): Add `version.c'; source it from...

	* version.c.in: ...this new file.

	* Makefile.in: Update copyright notice for new year.
	(mingw-get$(EXEEXT)): Add dependency on `version.$(OBJEXT)'.
	(distclean): Add `version.c'.

	* configure: Regenerated.

	* src/clistub.c: Update copyright notice for new year.
	(options): New array of `struct option'; define and use it as the
	reference for `argv' parsing with `getopt_long_only()'.

2009-12-17  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add CLI support for "update" action.

	* src/pkgtask.h (ACTION_UPDATE): Define it, derived from...
	(action_update): ...this new entry in anonymous enumeration.
	
	* src/pkgexec.cpp (action_name): Add "update" keyword identification.

	* src/pkgbase.h: Typo in comment; s/xwXmlDocument/wxXmlDocument/.
	(pkgXmlDocument::BindRepositories): Add `force_update' parameter...
	* src/pkgbind.cpp (pkgXmlDocument::BindRepositories): Use it to...
	(pkgXmlDocument::SyncRepository): ...invoke this method when passed as
	a `true' flag, in addition to (as previously) first time reference.

	* src/climain.cpp (climain): Interpret "update" keyword for...
	[ACTION_UPDATE]: ...passing state as `force_update' parameter to...
	(pkgXmlDocument::BindRepositories): ...this method, then...
	[!ACTION_UPDATE]: Follow with normal action processing.

2009-12-16  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add status checking for Internet URL connections.

	* src/pkginet.cpp (pkgInternetAgent::QueryStatus): New method.
	(pkgInternetStreamingAgent::Get): Use it; set `dl_status' as return
	value, deferring failure diagnostics to callers, i.e. to...
	(pkgXmlDocument::SyncRepositories): ...this, and to...
	(pkgActionItem::DownloadArchiveFiles): ...this.

2009-11-23  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add package download and repository synchronisation machinery.

	* src/pkgstrm.h: New header file.

	* src/pkgbind.cpp, src/pkginet.cpp, src/pkgstrm.cpp,
	src/pkgfind.cpp, src/pkgname.cpp, src/keyword.c: New files.
	* Makefile.in (CORE_DLL_OBJECTS): Add build goals for them.

	* xml: New directory.

	* src/climain.cpp (climain): Establish repository bindings from...
	* xml/profile.xml: ...this new configuration file.

2009-11-16  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add XML database bindings and preliminary action executive for CLI.

	* src/pkgbase.h, src/pkgtask.h,
	src/mkpath.h, src/vercmp.h: New header files.

	* src/climain.cpp, src/pkgexec.cpp, src/pkgspec.cpp,
	src/mkpath.c, src/vercmp.cpp, src/xmlfile.c: New files.

	* Makefile.in (CORE_DLL_OBJECTS): Define initial set of files...
	(mingw-get-0.dll): ...build them into this new DLL target; add it...
	(all): ...as prerequisite for this primary build goal.

2009-11-12  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Avoid some potential GCC warnings.

	* src/clistub.c: Include process.h for `execv' prototype...
	(main): Cast `argv' to appropriately matched type when calling it.

	* src/pkginfo/driver.c: Include stdlib.h for `free' prototype.

2009-11-11  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Create diagnostic message handler for CLI usage.

	* src/dmh.h: New header file; it defines the public interface.
	* src/dmh.cpp: New file; it implements the message handler.

2009-11-05  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Correct some identified TinyXML issues.

	* tinyxml/tinyxml.h (IsWhiteSpace): Add FIXME annotation to flag
	probable redundancy of checks for '\n' and '\r'.
	* tinyxml/tinyxmlparser.cpp: Revert John E's 2008-08-09 change; remove
	all such redundancies in IsWhiteSpace() calls throughout.

	* tinyxml/tinyxml.cpp (TiXmlAttribute::SetDoubleValue): Correct format
	specification in sprintf()/snprintf() calls; "%lf" is invalid; replace
	with "%f".

2009-10-31  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add CLI loader stub.

	* src/clistub.c: New file.
	* Makefile.in: Add build rule for it; build as...
	(mingw-get.exe): ...this; also add to...
	(clean): ...this goal.

2009-10-31  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Set up build mechanism.

	* configure.ac, Makefile.in: New files.
	* .cvsignore (configure, autom4te.cache): Add to ignored files.

2009-10-30  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add GPL-v3 licensing terms.

	* COPYING: New file, sourced from gnu.org.

2009-10-12  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Add pkginfo implementation.

	* src, src/pkginfo: New directories.
	* src/pkginfo/pkginfo.h, src/pkginfo/pkginfo.l: New files.
	* src/pkginfo/driver.c: New file.

2009-10-12  Keith Marshall  <keithmarshall@users.sourceforge.net>

	Create tdm-branch.

	* All files (tdm-branch): Assign new branch tag.
	* All top-level files: Remove from trunk.
	* ChangeLog: New file.