+2013-05-14 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Make application manifest resource definition reusable.
+
+ * src/manifest.rc: New file; factor content from...
+ * src/guimain.rc: ...here, whence include it.
+
+2013-05-08 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Extend DMH services to delay-loaded DLL clients.
+
+ * src/dmhcore.h (dmh_bind): New function; declare it.
+ * src/dmhcore.cpp (dmh_bind): Implement it; it provides an API through
+ which the setup tool makes its existing DMH services available to post
+ install hooks in mingw-get-0.dll, which cannot be loaded until after
+ the providing package has been downloaded and unpacked.
+
+2013-05-08 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Avoid unnecessary command line globbing in GUI applications.
+
+ * src/guimain.cpp src/guistub.cpp (_CRT_glob): Declare as extern "C";
+ initialise to zero, so overriding the runtime start-up default.
+
+ * src/rites.c [! IMPLEMENT_INITIATION_RITES] (_CRT_glob): Initialise
+ to zero here too; lastrites.exe doesn't need globbing either.
+
+2013-05-04 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Address some GCC-4.7 string initialisation warnings.
+
+ * src/pkglist.cpp (AppWindowMaker::InitPackageListView): Declare all
+ headings[].text initialisers as 'const'; cast to 'char *' as required.
+ (pkgListViewMaker::Dispatch): Ditto, when inserting the 'const' empty
+ string into the list, as a component class value.
+
+ * src/pkgdata.cpp (AppWindowMaker::InitPackageTabControl): Declare all
+ TabLegend[] initialisers as 'const'; cast to 'char *' as required.
+
+2013-05-02 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Correct a spin wait thread synchronisation issue.
+
+ * src/pkgnget.cpp (pkgDownloadMeterGUI::SpinWait): Handle stop
+ requests explicitly; acknowledge when waiting thread has stopped.
+ (pkgDownloadMeterGUI::SpinWaitAction): Raise explicit stop requests;
+ wait for acknowledgement that waiting thread has stopped.
+
+2013-04-23 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Select compressed data streaming filters for use by setup tool.
+
+ * src/pkgstrm.cpp [IMPLEMENTATION_LEVEL != PACKAGE_BASE_COMPONENT]:
+ Exclude the implementations of all decompression filters, except...
+ (pkgXzArchiveStream): ...this, together with its requisite methods...
+ (pkgArchiveStream, pkgLzmaArchiveStream): ...from these.
+
+2013-04-23 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Adapt internet download agent for use by setup tool.
+
+ * src/pkgbase.h: More code rearrangement, exposing...
+ (safe_strcmp): ...this in any implementation context, controlled...
+ [USES_SAFE_STRCMP && ! HAVE_SAFE_STRCMP]: ...by this; when true...
+ (HAVE_SAFE_STRCMP): ...define this to 1, (must be non-zero).
+ [IMPLEMENTATION_LEVEL == PACKAGE_BASE_COMPONENT]: Ensure that...
+ (USES_SAFE_STRCMP): ...this is defined to 1, (i.e. non-zero).
+ (EXTERN_C): Relocate macro definition...
+ * src/pkgimpl.h: ...to here; add complementary implementation of...
+ (BEGIN_C_DECLS, END_C_DECLS): ...these new macros; define them.
+
+ * src/pkginet.h (pkgDownloadMeter::SpinWait): New static method;
+ declare it as inline, to be implemented elsewhere, delegating to...
+ (pkgDownloadMeter::SpinWaitAction): ...this new protected virtual
+ method; declare and implement it inline, as a "do nothing" base
+ class method, to be optionally overridden in a derived class.
+
+ * src/pkginet.cpp (pkgDownloadMeter::SpinWait): Implement it.
+ (pkgInternetAgent::OpenURL): Use it to invoke SpinWaitAction().
+ (USES_SAFE_STRCMP): Define as 1; (safe_strcmp() is required).
+ [IMPLEMENTATION_LEVEL != PACKAGE_BASE_COMPONENT]: Filter out code
+ which may not be required in more specialised contexts, then...
+ [IMPLEMENTATION_LEVEL == SETUP_TOOL_COMPONENT]: ...add specialised
+ variants specific to this.
+
+ * src/pkgnget.cpp [IMPLEMENTATION_LEVEL != PACKAGE_BASE_COMPONENT]:
+ Filter out code which may not be required in more specialised context.
+ (dmh_setpty): Provide locally declared prototype for external function.
+ (pkgDownloadMeterGUI): Add pseudo-terminal diagnostic message window.
+ (pkgDownloadMeterGUI::SpinWaitAction): Declare and implement GUI
+ specific method specialisation; it invokes a thread, running...
+ (pkgDownloadMeterGUI::SpinWait): ...this new static method overload.
+
+2013-04-19 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Implement pre-emptive update issue number identification.
+
+ * src/pkgkeys.h (serial_number): Declare function prototype.
+ * src/pkginet.cpp (serial_number): Implementation remains here;
+ promote from static to extern "C".
+
+ * src/pkgbind.cpp (value_assumed_new): New char constant; define it.
+ (pkgRepository::expected_issue): New private member var; declare and...
+ (pkgRepository::pkgRepository): ...initialise it, assuming new.
+ (pkgRepository::GetPackageList): Assign pre-emptively declared issue
+ number, (from package-list references), to 'expected_issue'; compare it
+ with 'current_issue' number recorded within locally stored catalogue.
+ [current_issue >= expected_issue]: Suppress redundant download; adjust
+ diagnostic messages as appropriate.
+
+2013-04-10 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Fix MinGW-Bug #1601 (on new issues tracker).
+
+ * aclocal.m4 (makeopts.m4): New build-aux module; include it.
+ (MINGW_AC_PROG_LEX): New macro; implement it.
+
+ * configure.ac (AC_INIT): Make version number tripartite.
+ (MINGW_AC_MAKE_NO_PRINT_DIRECTORY): Use this new makeopts.m4 macro.
+ (MINGW_AC_PROG_LEX): Use it, in place of...
+ (AC_PROG_LEX): ...this.
+
+ * Makefile.in (MAKE): New macro; assign using autoconf's SET_MAKE.
+ (QUIET_MAKE): New macro; derive it from $(MAKE) --no-print-directory.
+ (LEX_COMMAND, LEX_COMMAND_ABORT): New macros; define them.
+ (LEX_MISSING, LEX_MISSING_MESSAGE, LEX_OUTPUT): Likewise.
+ (FORMAT_MESSAGE, MESSAGE_FOLD_WIDTH): Likewise; implemented from...
+ (AWK_CLEAR_LINE_BUFFER, AWK_FLUSH_BUFFER, AWK_PRINT_AND_CLEAR_BUFFER):
+ (AWK_COLLECT_MESSAGE, AWK_COLLECT_BLANK_LINE, AWK_PRINT_LINE_BUFFER):
+ ...this collection of internal helper macros; define them.
+ (%.c: %.l): Replacement for built-in rule; it handles "missing lex" in
+ a manner consistent with expectations of autoconf's AC_PROG_LEX.
+ (execute-command): New phoney build goal; it is used with...
+ (WITH_REQUEST): ...this new macro, to invoke commands recursively.
+
+2013-03-25 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Adapt DMH for use in setup tool.
+
+ * src/dmh.cpp: File renamed to...
+ * src/dmhcore.cpp: ...this; some code rearranged, to facilitate...
+ [IMPLEMENTATION_LEVEL == PACKAGE_BASE_COMPONENT]: ...marking of code
+ sections which are required in the base package build, but which may
+ be filtered out of the build context for the setup tool.
+
+ * src/guidmh.cpp: File renamed to this...
+ * src/dmhguix.cpp: ...this; also add marking for...
+ [IMPLEMENTATION_LEVEL == PACKAGE_BASE_COMPONENT]: ...sections which
+ may be filtered out of the build context for the setup tool.
+ (dmhTypePTY::printf): Improve stratagem for output.
+
+ * Makefile.in (CORE_DLL_OBJECTS, GUIMAIN_OBJECTS): Adjust references
+ to renamed source files.
+
2013-03-22 Keith Marshall <keithmarshall@users.sourceforge.net>
Enable context hooks for build time code filtering.