X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=ChangeLog;h=efa511939c86963b392e83c16923f47f82e81fc8;hb=dc65bde6c46e974b57d4c1a86542aea731a9289b;hp=deff34fe1a514c972728011fd4b3237a1acc7d3a;hpb=e0f62b095b7955df74d16911e6f7789947eb5d4c;p=mingw%2Fmingw-get.git diff --git a/ChangeLog b/ChangeLog index deff34f..efa5119 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,647 @@ +2013-10-02 Keith Marshall + + Support group affiliation with component package granularity. + + * src/pkglist.cpp (pkgXmlNode::IsVisibleClass): Make it synonymous + with IsVisibleGroupMember(); this is a temporary adjustment, pending + the planned implementation of component class visibility filtering. + (pkgListViewMaker::Dispatch): Defer consideration of visibility until + traversal of component package directories, except in the particular + case of packages which lack defined components. + +2013-10-01 Keith Marshall + + Correct processing of package group associations. + + * src/pkgtree.cpp (AppWindowMaker::IsPackageGroupAffiliate): Iterate + over "affiliate_key" elements in FindNextAssociate() calls; original + implementation was incorrectly iterating over "group_key" elements. + +2013-09-21 Keith Marshall + + Reorder controls within "Apply Changes" dialogue. + + * src/guimain.rc (IDD_APPLY_APPROVE): Move definition of the "Okay to + proceed?" GROUPBOX, and its contained PUSHBUTTONs, to the top; we want + it to get the default focus. + +2013-09-21 Keith Marshall + + Reimplement wsh.lua in C/C++; (cf. MinGW-Bug #2057). + + * src/pkgexec.cpp (LUA_INLINE): New function attribute definition. + (init_lua_path): Use it, reproducing the original function attributes. + (lua_isstringarg): New LUA_INLINE helper function; implement it. + (lua_wsh_libexec_path): New function; it implements wsh.libexec_path + (lua_wsh_execute): New function; it implements wsh.execute + (luaload_wsh): New function; it wraps references to lua_wsh_execute() + and lua_wsh_libexec_path() to provide the wsh module implementation. + (pkgXmlNode::DispatchScript): Preload it into the Lua interpreter. + + * scripts/libexec/setup.lua (M.argwrap): New method; implement it. + (M.shlink, M.unlink): Use it to collect their arguments into a single + string, to be passed as the command to be invoked by wsh.execute + + * scripts/libexec/wsh.lua: File is no longer required; delete it. + * Makefile.in (LIBEXEC_SCRIPTS): Remove reference to it. + +2013-09-20 Keith Marshall + + Establish default preferences for GUI; (cf. MinGW-Feature #2036) + + * src/pkgbase.h (pkgXmlDocument::EstablishPreferences): Adjust its + prototype; add argument identifying prospective client classification. + + * src/pkgopts.cpp (client_key): New XML property keyword; define it. + (pkgXmlDocument::EstablishPreferences): Implement filter, based on new + client classification argument, to restrict preference selection to a + matching client class specification. + + * src/climain.cpp (dbase.EstablishPreferences): Filter on class "cli". + * src/guiexec.cpp (pkgData->EstablishPreferences): Likewise, on "gui". + + * xml/profile.xml (preferences): Add client="cli" attribute for the + existing specification; add another for client="gui". + +2013-09-20 Keith Marshall + + Force canonical comparison of shell links; (cf. MinGW-Bug #2054) + + * scripts/libexec/unlink.js [FileExists(filename) && (chklink != "")]: + The value of 'chklink' may not be canonical; instantiate an (unsaved) + link reference from it, then compare the canonicalized reference from + within it, to the reference within 'filename', thus avoiding possible + lexical mismatch between canonical and non-canonical forms. + +2013-09-19 Keith Marshall + + Correct LUA_PATH assignment for GUI; (cf. MinGW-Bug #2052) + + * src/pkgexec.cpp (LUA_LIBEXEC_PATH): New manifest string; define it. + (init_lua_path) : Use it; add guimain.exe app directory. + +2013-09-19 Keith Marshall + + Handle meta-package removal correctly; (cf. MinGW-Bug #2051) + + * src/pkgunst.cpp (pkgRemove) [archive == none]: Ensure the pending + action flag is cleared; previously this was done during manifest clean + up, and since a meta-package has no manifest, it was overlooked. + +2013-09-10 Keith Marshall + + mingw-get-0.6.1-mingw32-beta-20130910-1 released. + + * srcdist-doc/NEWS.in: Release notes updated. + * All files (r0-6-1-beta-20130910-1): Tag assigned. + +2013-09-10 Keith Marshall + + Fix MinGW-Bug #2026. + + * src/dmhguix.cpp (DMH_PTY_GUARDBYTES): New manifest constant. + (dmhTypePTY::printf) [buffer full]: Use it; it defines a reserved byte + count, at end of buffer, where expansion or scroll out is triggered; + use memcpy() for scroll out, but avoid overlapping regions. + (dmhTypePTY::printf) [output == '\r']: Handle it. + + * src/tarproc.cpp (create_output_stream): Improve diagnostic messages; + discriminate between file collision and other privilege violations. + (pkgArchiveProcessor::ExtractFile): Don't return a zero status code, + when the output stream could not be successfully opened, so that... + (pkgTarArchiveInstaller::ProcessDataStream): ...we may avoid writing a + spurious manifest entry here. + +2013-09-06 Keith Marshall + + Update version, pre-empting subsequent release. + + * VERSION.m4 (VERSION_PATCH): Bump from zero to 1. + +2013-09-04 Keith Marshall + + mingw-get-0.6.0-mingw32-beta-20130904-1 released. + + * srcdist-doc/NEWS.in srcdist-doc/README.in: Release notes updated. + * srcdist-doc/INSTALL.in: Installation instructions updated. + * All files (r0-6-0-beta-20130904-1): Tag assigned. + +2013-08-26 Keith Marshall + + Implement retry throttling for failed internet connections. + + * src/pkginet.h (INTERNET_RETRY_ATTEMPTS): New macro; define it. + (INTERNET_RETRY_INTERVAL, INTERNET_DELAY_FACTOR): Likewise. + + * src/pkginet.cpp (INTERNET_RETRY_REQUESTER): New typedef. + (pkgInternetAgent::connection_delay, pkgInternetAgent::delay_factor): + (pkgInternetAgent::retries, pkgInternetAgent::retry_interval): New + private member variables; declare them. + (pkgInternetAgent::OpenURL): Use them; they must be initialised by... + (pkgInternetAgent::SetRetryOptions): ...this new method; implement it. + (pkgActionItem::DownloadSingleArchive): Invoke it. + (pkgXmlDocument::SyncRepository): Likewise. + +2013-08-24 Keith Marshall + + Reassign default URL for download of setup tool components. + + * aclocal.m4 (PACKAGE_DIST_DOMAIN, PACKAGE_DIST_DIR): New precious + variables; declare them as such, and assign default values by using... + (MINGW_AC_PACKAGE_DIST_URL): ...this new macro; implement it. + + * configure.ac (MINGW_AC_PACKAGE_DIST_URL): Use it. + * Makefile.in (TAG_SCRIPT): Capture assigned URL; substitute it... + (PACKAGE_DIST_URL): ...for this replacement text marker... + * src/setup.rc (ID_DOWNLOAD_HOST_URI): ...here. + +2013-08-21 Keith Marshall + + Simplify guimain.exe duplicate instance prevention. + + * src/guimain.cpp (WinMain): Delegate requisite checking to... + (WTK::RaiseAppWindow): ...this external toolkit function. + +2013-08-13 Keith Marshall + + Install licence as standard setup component. + + * src/guimain.h src/setup.rc (ID_PACKAGE_GUI_DISTNAME): Macro + no longer required; delete definition. + + * src/setup.cpp (pkgSetup::DoFirstTimeInstallation): + [ID_PACKAGE_GUI_DISTNAME]: Delete reference. + [ID_PACKAGE_BASE_DISTNAME]: Update reference; repeat + to explicitly address each of "bin", "gui", and "lic" components. + + * Makefile.in (TAG_SCRIPT) [PACKAGE_GUI_DISTNAME]: Delete reference. + (TAG_SCRIPT) [PACKAGE_BASE_DISTNAME]: Redefine as template. + +2013-08-13 Keith Marshall + + More dialogue box adjustments. + + * src/guimain.rc: Generally clean up white-space distribution. + (All dialogue templates): Use WS_TABSTOP consistently. + +2013-08-13 Keith Marshall + + Circumvent Windows-7 "Program Compatibility Assistant" misbehaviour. + + * src/manifest.rc (assembly) : Add + declarations for each of Vista, Win7, and (tentatively) Win8. + +2013-07-30 Keith Marshall + + Minor modification to "about" dialogue dismissal button. + + * src/guimain.rc (IDD_HELP_ABOUT) : Change label text + to "Dismiss"; add WS_TABSTOP style. + +2013-07-30 Keith Marshall + + Match "about" dialogue caption to main window. + + * src/guimain.rc (IDM_HELP_ABOUT) : Match it to... + (IDD_HELP_ABOUT) : ...this; make it representative of... + (ID_MAIN_WINDOW_CAPTION): ...this. + +2013-07-30 Keith Marshall + + Implement "icon legend" display as "help" menu item. + + * src/guimain.rc (IDM_HELP_LEGEND): Make menu item active; define + template for the dialogue box which it is to call out. + + * src/guiexec.cpp (AppWindowMaker::OnCommand) [IDM_HELP_LEGEND]: New + case handler; implement dialogue box call out, as a variation on... + [IDM_HELP_ABOUT]: ...this; modify it accordingly. + +2013-07-30 Keith Marshall + + Avoid discarding pending changes when catalogue is updated. + + * src/guimain.h (IDD_CONFIRMATION): New manifest constant; define it. + (AppWindowMaker::ConfirmActionDialogue): New static method; declare it. + (AppWindowMaker::ConfirmActionRequest): New method; declare it. + + * src/guimain.rc (IDD_CONFIRMATION): Implement new dialogue template. + + * src/guiexec.cpp (pkgConfirmAction, pkgConfirmActionClient): New + static variables; they are used as pseudo-arguments, together with... + (DIALOGUE_DISPATCH, DIALOGUE_RESPONSE, DIALOGUE_CHKSTATE): ...these + new macros; define them; they facilitate the implementation of... + (AppWindowMaker::ConfirmActionDialogue): ...this; implement it. + (AppWindowMaker::ConfirmActionRequest): Implement it; use it... + (AppWindowMaker::OnCommand) [IDM_REPO_UPDATE]: ...here, and... + + * src/pkgdata.cpp (AppWindowMaker::OnClose): ...here. + +2013-07-26 Keith Marshall + + Make a minor GUI layout adjustment. + + * src/pkgview.cpp (VSASH_INIT_POS): Increment from 0.30 to 0.35; this + sets the initial height of the package list pane to be 35% of the main + window height, which, at the default initial window size, neatly fits + the entire "Basic Setup" package group, without scrolling, on my + 1366x768 pixel Win7-VM display. + +2013-07-25 Keith Marshall + + Implement setup tool installer "plugin". + + * src/setup.h (SETUP_HOOK_RUN_INSTALLER): Define request code. + + * src/dllhook.cpp (run_basic_system_installer): Implement handler... + (setup_hook) [SETUP_HOOK_RUN_INSTALLER]: ...and invoke it. + (setup_hook) [default]: Collect diagnostics in common message digest. + (AppWindowMaker::SetupHookInvoked): Define and initialise it; in this + context, which does not conflict with prior definition in guimain.exe, + it must always remain true. + + * src/setup.cpp (SetupTool) [constructor]: Invoke... + (SetupTool::DispatchSetupHookRequest): ...this, on user's request... + (SETUP_HOOK_RUN_INSTALLER): ...with this action code; this replaces... + (SetupTool::RunInstalledProgram): ...one reference instance for this + external program fork, leaving only one such reference remaining; + declare it to be "inline". + + * Makefile.in (GUIMAIN_LIB_OBJECTS): New macro; define it. It + abstracts a subset of the object modules originally enumerated... + (GUIMAIN_OBJECTS): ...here, whence use it; also incorporate into... + (SETUP_DLL_OBJECTS): ...this. + (SETUP_DLL_LIBS): Make it equivalent to... + (GUIMAIN_LIBS): ...this. + (mingw-get-setup-0.dll): Use... + (GUI_LDFLAGS): ...this, to specify linking options, rather than... + (LDFLAGS): ...this. + +2013-07-25 Keith Marshall + + Add "Basic Setup" as a built-in standard package group. + + * src/guimain.h (AppWindowMaker::SetupToolInvoked): New private + static member variable; declare it. + + * src/guimain.cpp (AppWindowMaker::SetupToolInvoked): Define and + initialise it; this instance is specific to guimain.exe, where it + must always remain false. + + * src/pkgtree.cpp (PKG_AFFILIATE_ALL): New constant; define it. + (load_package_group_hierarchy): Use it to specify those groups which + have all packages as affiliates, rather than just first root group. + (group_attributes): New static inline function; implement it, then... + (is_affiliated) [PKG_AFFILIATE_ALL]: ...use it to identify groups + which are specified as having all packages as affiliates. + (AppWindowMaker::InitPackageTreeView): Construct a temporary XML + specification for the "Basic Setup" package group, thence add it to + the package tree view; mark it as default group selection when... + [AppWindowMaker::SetupToolInvoked]: ...this is true. + +2013-07-14 Keith Marshall + + Implement GUI filtering of package list by group selection. + + * src/pkgbase.h (pkgXmlNode::IsVisibleGroupMember): + (pkgXmlNode::IsVisibleClass): New inline methods; declare them. + (pkgXmlNode::MapPackageGroupHierarchy): New inline method; declare it. + (pkgXmlNode::SetPackageGroupHierarchyMapper): Likewise; it sets up... + (pkgXmlNode::PackageGroupHierarchyMapper): ...this new private static + function pointer; declare it as a function reference, in terms of... + (pkgXmlNode::GroupHierarchyMapper): ...this new typedef; define it. + + * src/guimain.h (AppWindowMaker::PackageTreeView): Make it static. + (AppWindowMaker::IsPackageGroupAffiliate): Declare new static method. + + * src/pkgbind.cpp (pkgRepository::GetPackageList): Make it invoke... + (pkgXmlNode::MapPackageGroupHierarchy): ...this; implement it. + + * src/pkglist.cpp (pkgXmlNode::IsVisibleGroupMember): Implement it. + (pkgXmlNode::IsVisibleClass): Likewise; just provide a stub, for now. + (pkgListViewMaker::Dispatch): Use them to filter package list content. + (AppWindowMaker::UpdatePackageList): Redraw main window when done. + + * src/pkgtree.cpp [_WIN32_IE >= 0x0400]: Require this. + (AppWindowMaker::PackageTreeView): Define and initialise it. + (AppWindowMaker::InitPackageTreeView): Extend implementation; use... + (map_package_group_hierarchy_recursive, load package_group_hierarchy): + (is_existing_group, map_package_group_hierarchy): ...these; implement + them locally, as file scoped static helper functions. + (select_key): New static local string constant; define it. + (pkgInitCategoryTreeGraft): Use it; also have it invoke... + (pkgXmlNode::SetPackageGroupHierarchyMapper): ...this; implement it. + (AppWindowMaker::IsPackageGroupAffiliate): Implement it; it uses... + (is_affiliated, is_child_affiliate): ...these helpers; provide them as + locally implemented, file scoped static functions. + + * src/pkgdata.cpp (AppWindowMaker::OnNotify): Add handler for... + [ID_PACKAGE_TREEVIEW && TVN_SELCHANGED]: ...this notification. + +2013-07-12 Keith Marshall + + Correct a static string buffer aliasing issue. + + * src/setup.cpp (SetupTool::setup_dll): New inline method; it ensures + that the buffer within approot_path() refers to the setup helper DLL. + (SetupTool::InitialiseSetupHookAPI): Use it, when loading the DLL. + (SetupTool::SetupTool): Use it again, when subsequently calling... + (_wunlink): ...this; it is now the preferred API, replacing... + (DeleteFileW): ...this; do not blindly assume that... + (SetupTool::dll_name): ...this remains unchanged between references; + it is an alias for the static buffer within approot_path(). + +2013-07-12 Keith Marshall + + Add a custom profile for use by the setup tool. + + * xml/setup.xml: New file. + +2013-07-03 Keith Marshall + + Improve handling of workspace clean-up requests. + + * Makefile.in (mostlyclean): New rule; it replaces... + (clean): ...original intent delegated to 'mostlyclean'; retained and + augmented to remove all content specified by 'mostlyclean', plus... + (version.c, verinfo.h): ...these additional generated files. + (distclean): Modified; 'version.c' now removed by 'clean'. + +2013-07-03 Keith Marshall + + Correct an omission from the source code distribution. + + * Makefile.in (BUILD_AUX_FILES): Add makeopts.m4; this was omitted + from the 2013-04-10 modification to fix MinGW-Bug #1601. + +2013-07-03 Keith Marshall + + Incorporate foundation for setup tool implementation. + + * src/setup.cpp: New file; it implements the setup program. + * src/setup.rc: New file; it implements setup program resources. + + * src/dllhook.cpp: New file; it implements a DLL bridging API to + facilitate invocation of mingw-get-0.dll functions from the setup + program, after both DLLs have been explicitly loaded at run time. + + * src/setup.h: New file; it declares the interface between the + setup program and the preceding mingw-get bridging DLL. + + * src/guimain.h: Add filter to exclude declarations specific to... + [IMPLEMENTATION_LEVEL == PACKAGE_BASE_COMPONENT]: ...this case, when + included by compilation units specific to the setup tool components. + (ID_MAIN_DIALOGUE_CAPTION, ID_DOWNLOAD_HOST_URI): New resource IDs. + (ID_PACKAGE_BASE_DISTNAME, ID_PACKAGE_DATA_DISTNAME): Likewise. + (ID_PACKAGE_GUI_DISTNAME): Likewise; define them. + + * Makefile.in (all): Respecify it, in terms of... + (all-core, all-setup): ...these new rules; define them, and also... + (all-setup-exe, all-setup-dll): ...these, to force building of... + (mingw-get-setup.$EXEEXT, mingw-get-setup-0.dll): ...these binaries. + (setup.res.$OBJEXT): Specify prerequisites, as for guimain.res.$OBJEXT + (SETUP_TOOL_OBJECTS, SETUP_TOOL_LIBS): New macros; define them. + (SETUP_DLL_OBJECTS, SETUP_DLL_LIBS, SETUP_DISTNAME): Likewise. + (TAG_SCRIPT): Add resource script substitution definitions for... + (ID_PACKAGE_BASE_DISTNAME, ID_PACKAGE_DATA_DISTNAME): ...these... + (ID_PACKAGE_GUI_DISTNAME): ...and this. + +2013-07-01 Keith Marshall + + Add subprocess argument vector construction helpers. + + * src/argwrap.c src/argwrap.h: New files; they implement an API for + construction of argument vectors, with appropriate quoting, to be + passed to MS-Windows exec'd subprocesses. Rewritten from scratch, + without reference to any prior GPL licensed implementation, with MIT + style licence, these provide the foundation for a possible future + libmingwex.a implementation; they are included here, since no such + implementation is currently available. + +2013-06-28 Keith Marshall + + Avoid inadvertent overwrite of existing files. + + * src/mkpath.c (_O_NEWFILE): Conditionally specify attributes... + [IMPLEMENTATION_LEVEL == SETUP_TOOL_COMPONENT]: ...as they were... + [IMPLEMENTATION_LEVEL != SETUP_TOOL_COMPONENT]: ...else, include + _O_EXCL in the specified set; exclude _O_TRUNC. + + * src/tarproc.cpp (dmh_notify_extraction_failed): New static inline + function; it encapsulates the diagnostic message factored out from... + (pkgArchiveProcessor::ExtractFile): ...here, whence use it. + (create_output_stream): Also used in this new static inline function; + it adds an appropriate diagnostic wrapper around set_output_stream(), + when _O_EXCL prevents overwrite of an existing file. + (pkgArchiveProcessor::SetOutputStream): Use it. + +2013-06-27 Keith Marshall + + Improve diagnostics for tar archive processing faults. + + * src/pkgproc.h (TAR_ARCHIVE_FORMAT_ERROR): New constant; define it. + (TAR_ARCHIVE_DATA_READ_ERROR, TAR_ARCHIVE_DATA_WRITE_ERROR): Likewise. + + * src/tarproc.cpp (dmh_notify_archive_data_exhausted): New static + inline function; implement it. + (pkgTarArchiveProcessor::GetArchiveEntry) [short header]: Use it. + (pkgArchiveProcessor::ExtractFile) [TAR_ARCHIVE_DATA_READ_ERROR]: + Likewise, use it here; also explicitlycheck for, and diagnose... + [TAR_ARCHIVE_DATA_WRITE_ERROR]: ...this; also add a further catch all + case, to diagnose any other unexpected condition. + (pkgTarArchiveProcessor::GetArchiveEntry) [bad checksum]: Diagnose it. + (pkgTarArchiveProcessor::Process): Return appropriate status codes. + (pkgTarArchiveProcessor::ProcessEntityData): Likewise. + +2013-06-24 Keith Marshall + + Facilitate version synchronisation for mingw-get-setup. + + * VERSION.m4: New file. + * configure.ac: Include it, and... + (AC_INIT): ...use it. + +2013-06-21 Keith Marshall + + Keep version strings clean when release class is unspecified. + + * Makefile.in (RC_SCRIPT, VERSION_SCRIPT): Simplify; assign specified + release class to local variable; delegate release tag generation to... + (TAG_SCRIPT): ...this; check release class variable is not an empty + string, before inserting it into the generated release tag. + +2013-06-20 Keith Marshall + + Rework defective assignment of product version resources. + + * Makefile.in (BUILD_TAG): Avoid creating an empty build.tag file. + (PACKAGE_VERINFO_SCRIPT): Ensure that the build tag is generated as a + string of non-zero length. Do not assume that it comprises only two + elements; extract the final two, as the third and fourth elements + of the product version meta-data record. + +2013-06-19 Keith Marshall + + Rework defective package build time-stamping logic. + + * Makefile.in (%.time): Make it explicitly touch its target; the + 2013-05-15 changes, to reduce redundancy, didn't work as expected. + (%.tag): Add a side effect; make it also explicitly touch %.time. + (%.tagged.time): This is now redundant; remove it. + +2013-06-14 Keith Marshall + + Collect distributable package files in user specified directory. + + * Makefile.in (distdir): New macro; define default as abs_builddir. + (srcdist, bindist, licdist): Use it; direct generated tarballs to it. + (%.txt.dist): New pattern rule; define, and use it to make a copy... + (readme.txt): ...of this, in distdir, when processing... + (dist): ...this build objective. + +2013-06-14 Keith Marshall + + Handle Microsoft's 32-bit vs. 64-bit time_t ambiguity. + + * src/apihook.c: New file; it provides... + (have_api): ...this helper; it checks for availability of any specific + API function, within a specific system DLL, (MSVCRT.DLL by default). + + * src/tarproc.cpp (have_utime64_api): New inline function; it wraps... + (have_api): ...this, to check whether MSVCRT.DLL provides... + (commit_saved_entity) [_utime64]: ...this; use if available, else... + (commit_saved_entity) [!_utime64]: ...fall back to using... + (utime): ...this. + + * Makefile.in (CORE_DLL_OBJECTS): Add apihook.$OBJEXT + +2013-06-13 Keith Marshall + + Facilitate package extraction and registration at setup time. + + * src/pkgproc.h (IMPLEMENTATION_LEVEL): Add filters to facilitate + implementation of distinct setup time archive processing behaviour. + (pkgArchiveProcessor::save_on_extract): New property; declare it. + (pkgArchiveProcessor::SaveExtractedFiles): New method; implement it. + (pkgArchiveProcessor::SetOutputStream): New method; declare it. + + * src/tarproc.cpp (IMPLEMENTATION_LEVEL): Add filters to implement + distinct setup time specific archive processing behaviour. + (pkgArchiveProcessor::SetOutputStream): Implement it. + (pkgTarArchiveExtractor::ProcessDataStream): Use it. + (pkgTarArchiveInstaller::ProcessDataStream): Likewise. + +2013-06-13 Keith Marshall + + Implement some GUI progress metering dialogue enhancements. + + * src/pkgbase.h (pkgProgressMeter): Don't pre-empt private features + of derived progress metering classes; hence, we no longer need this... + (AppWindowMaker): ...as a forward class declaration; delete it. + + * src/guimain.rc (IDD_REPO_UPDATE): Resize, and adjust layout. + (IDD_PROGRESS_VAL, IDD_PROGRESS_MAX, IDD_PROGRESS_PCT): Add these + dialogue box progress counter display elements. + + * src/pkgbind.cpp (pkgRepository::GetPackageList): Adjust style of + progress status messages, to suit reporting via GUI dialogue box or + CLI console, as appropriate. + + * src/guiexec.cpp (ProgressMeterMaker): Redefine class, in terms of... + (PROGRESS_METER_CLASS): ...this new generic class name macro. + Reimplement private members, previously inherited from base class; + adjust class constructor to ensure that they are initialised. + Delete explicit destructor; a default destructor is now sufficient. + (ProgressMeterMaker::SetRange, ProgressMeterMaker::SetValue): + (ProgressMeterMaker::Annotate): Factor out; reimplement them... + + * src/pmihook.cpp: ...in this new file, as generalised methods of... + (PROGRESS_METER_CLASS): ...the class named by this macro. + (PROGRESS_METER_CLASS::PutVal): New private method; implement it. + +2013-05-31 Keith Marshall + + Avoid a potential macro definition conflict. + + * src/pkgbase.h (strcasecmp) [__MINGW32__]: Use string.h definition. + +2013-05-15 Keith Marshall + + Streamline build-time dependency tracking procedures. + + * Makefile.in (DEPFLAGS): Adjust for simultaneous .o/.d generation. + (RC_DEPFLAGS): New macro; define dependency generation flags for the + resource compiler, which can't handle the new DEPFLAGS methodology. + (%.c, %.cpp, %.rc): Simplify $OBJEXT generation procedures. + (%.time): Remove redundantly replicated build-time procedure from... + (%.tagged.time): ...this; just make it a prerequisite. + +2013-05-15 Keith Marshall + + Add resources for specification of product version. + + * src/verinfo.rc src/verinfo.h.in: New files; included by... + * src/guimain.rc: ...this, whence also specify version information... + (VERINFO_FILE_NAME, VERINFO_INTERNAL_NAME, VERINFO_FILE_DESCRIPTION): + (VERINFO_FILE_VERSION, VERINFO_FILE_VERSION_STRING): ...per these new + manifest constant macros; define them, with propagation to... + (ID_MAIN_WINDOW_CAPTION): ...this; keep it consistent. + + * Makefile.in (TAG_SCRIPT): Include invocation for... + (PACKAGE_VERINFO_SCRIPT): ...this new macro; defined to interpret... + (PACKAGE_VERINFO_PRODUCT_VERSION): ...this new substitution template; + it is used in src/verinfo.h.in, whence verinfo.h is generated. + (RC_INCLUDES): Add current working directory, for... + (verinfo.h): ...this; add rule and dependencies to generate it. + +2013-05-14 Keith Marshall + + 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 + + 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 + + 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 + + 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 + + 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 Select compressed data streaming filters for use by setup tool.