OSDN Git Service

Update help text to document package version selection capability.
[mingw/mingw-get.git] / ChangeLog
1 2012-05-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
2
3         Update help text to document package version selection capability.
4
5         * src/clistub.c (help_text): Add description of command line syntax
6         which may be used to specify an alternative to the default package
7         version selection, for install and upgrade actions.
8
9 2012-05-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
10
11         Support options set by preferences assigned within profile.xml
12
13         * xml/profile.xml (preferences): New element; add defaults.
14
15         * src/pkgopts.h (OPTION_ASSIGNED_FLAGS, OPTION_DESKTOP_ARGS):
16         (OPTION_START_MENU_ARGS): New enumerated constants; define them.
17         (OPTION_DESKTOP, OPTION_START_MENU): New manifest constants.
18         (OPTION_ASSIGNED, mark_option_as_set): New macros; define them.
19         (pkgOpts::GetValue, pkgOpts::GetString): Restrict look-up index to
20         least significant 12-bits of full-range index value.
21         (pkgOpts::IsSet): New inline method; implement it.
22
23         * src/clistub.c (main): Reimplement --desktop and --start-menu
24         options; each now becomes an OPTION_GENERIC optarg string store.
25         (set_script_hook): Function no longer used; delete it; delegate to...
26         * src/pkgbase.h (pkgXmlDocument::EstablishPreferences): ...this new
27         method; declare it, providing its implementation in...
28         * src/pkgopts.cpp: ...this new file; invoke it...
29         * src/climain.cpp (climain): ...here.
30
31         * Makefile.in (CORE_DLL_OBJECTS): Add pkgopts.$OBJEXT
32
33 2012-04-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
34
35         Correct sequence of installation/removal progress reporting.
36
37         * src/pkgunst.cpp (pkgRemove): Delay output of "removing package ..."
38         message, until after pre-remove hooks have run; this ensures that any
39         output from the pre-remove hook scripts appears in correct sequence.
40
41         * src/pkginst.cpp (pkgInstall): Likewise, for "installing package ..."
42         message, in relation to pre-install hooks.
43
44 2012-04-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
45
46         mingw-get-0.5-beta-20120426-1 released.
47
48         * configure.ac (AC_INIT): Version number updated.
49         * srcdist-doc/NEWS.in: Updated; bug-fix notifications added.
50         * All files (r0-5-beta-20120426-1): Tag assigned.
51
52 2012-04-25  Keith Marshall  <keithmarshall@users.sourceforge.net>
53
54         Interim work-around for MinGW-Bug #3520864.
55
56         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies):
57         [DEBUG_TRACE_DEPENDENCIES]: Add request flags to messages reporting
58         the scheduling of installation activities.
59
60         * src/pkgexec.cpp (pkgXmlDocument::Schedule): Add temporary diagnostic
61         hooks to confirm request flags; bracket them with #if 0 ... #endif.
62         [ACTION_PRIMARY && pre-scheduled request]: Don't trash request flags
63         when updating the pre-existing action item data.
64
65 2012-04-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
66
67         Fix MinGW-Bug #3520488
68
69         * src/pkgexec.cpp (action_code): Check for, and reject NULL pointer
70         passed as action request string; also reject ambiguous abbreviations.
71
72         * src/climain.cpp (climain): Discriminate between NULL pointer and
73         other forms of invalid action keyword matching failures.
74
75 2012-04-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
76
77         mingw-get-0.5-beta-20120416-1 released.
78
79         * configure.ac (AC_INIT): Version number updated.
80         (YEARS_OF_ISSUE): 2012 added.
81
82         * srcdist-doc/NEWS.in: Updated; release notes added.
83         * All files (r0-5-beta-20120416-1): Tag assigned.
84
85 2012-04-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
86
87         Assign icon to temporary GUI executable file.
88
89         * icons/pkgicon.ico: New file, shamelessly copied from synaptic.
90
91         * configure.ac: Add identification for windres; propagate it to...
92         * Makefile.in: ...here; use it to compile object from icon files...
93         (srcdir/icons) [%.ico]: ...from this new vpath location.
94         (gui.exe): Link to compiled icon's object file.
95         (SRCDIST_SUBDIRS): Add icons directory.
96
97 2012-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
98
99         Ensure that package removal requests are correctly scheduled.
100
101         * src/pkgdeps.cpp (pkgXmlDocument::Schedule) [ACTION_REMOVE]: Schedule
102         as a distinct case, when the installed version is not the most recent
103         available release; consideration of this distinct case was previously
104         erroneously overlooked.
105
106 2012-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
107
108         Correct scheduling of new prerequisites when upgrading.
109
110         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies):
111         [ACTION_UPGRADE && ACTION_PRIMARY]: Don't exclude scheduling for this
112         case of a prerequisite with no previously installed version; it may be
113         a delegated primary requirement of a meta-package.
114
115 2012-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
116
117         Don't require subsystem within user specified version bounds.
118
119         * src/pkgdeps.cpp (pkgActionItem::ApplyBounds): Automatically consider
120         "*" wild-card matches for subsystem, if user doesn't specify it.
121
122 2012-04-09  Charles Wilson  <mingw@cwilson.fastmail.fm>
123
124         Fix missing include.
125
126         * src/pkgdeps.cpp (pkgopts.h): Include unconditionally; do not rely...
127         (debug.h) [DEBUG_TRACE_DYNAMIC]: ...on this, for indirect inclusion.
128
129 2012-04-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
130
131         Correct a srcdist package construction defect.
132
133         * Makefile.in (srcdist) [for SRCDIST_SUBDIRS]: Use...
134         (mkinstalldirs): ...this, to create package image directories.
135
136 2012-04-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
137
138         Add scripting hooks to support creation of MS-Windows shortcuts.
139
140         * src/clistub.c (progname): New static variable with file scope; it
141         replaces former automatic variable, of same name, in main() function.
142         (set_script_hook): New static function; implement it, and call it...
143         (main) [--desktop, --start-menu]: ...from here, to interpret these new
144         command line options; they are propagated to scripts via...
145         (MINGW_GET_DESKTOP_HOOK, MINGW_GET_START_MENU_HOOK): ...these new
146         internally assigned environment variables.
147         (help_text): Document --desktop and --start-menu.
148
149         * scripts/libexec/setup.lua scripts/libexec/wsh.lua: New lua module
150         files; they implement a lua scripting API; they delegate requests to
151         the Windows Scripting Host, via either of this pair of...
152         * scripts/libexec/shlink.js: ...new script to create shortcuts, or...
153         * scripts/libexec/unlink.js: ...its complement, to remove them.
154         * Makefile.in (SRCDIST_SUBDIRS): Integrate them; enumerate them in...
155         (scripts_srcdir, LIBEXEC_SCRIPTS): ...these new macros; use to...
156         (install): ...install them.
157
158 2012-04-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
159
160         Initialise $LUA_PATH to locate mingw-get specific scripts.
161
162         * src/pkgexec.cpp (lua_path_init): New static inline function.
163         (pkgXmlNode::DispatchScript): Call it on first time invocation, per...
164         [lua_path_setup == false]: ...this static function local variable.
165
166 2012-04-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
167
168         Support installation of releases other than latest available.
169
170         * src/pkgbase.h (pkgActionItem::ApplyBounds): New method; declare it.
171
172         * src/pkgdeps.cpp (pkgActionItem::ApplyBounds): Implement it.
173         (pkgXmlDocument::Schedule): Use it to interpret user specified version
174         bounds, and apply them to scheduled action items.  Having used...
175         (get_version_bounds): ...this new static inline function...
176         ...to acquire any user specified version bounds, check that they can
177         be honoured, before scheduling any action; delegate diagnostics to...
178         (dmh_notify_no_match): ...this new local helper function, to report
179         when they can't, and to indicate viable alternatives.
180
181 2012-03-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
182
183         Rework previously inadequate solution for MinGW-Bug #3424406
184
185         * src/pkgtask.h: Update copyright notice for current year.
186         (ACTION_MAY_SELECT): New manifest constant for use as flag; define it.
187         * src/pkgexec.cpp (pkgActionItem::SelectIfMostRecentFit): Assign it.
188
189         * src/pkgdeps.cpp (STATIC_INLINE): New macro; define it.
190         (ACTION_RECURSIVE_REINSTALL, ACTION_RECURSIVE_UPGRADE):
191         (ACTION_RECURSIVE_REPLACE): New action code constants; define them.
192         (with_flags): Original macro deleted; replace it with...
193         (with_request_flags): ...this new static inline function.
194         (if_noref, if_match, if_alias, with_download, promote): New static
195         inline functions; they replace original macros of the same names.
196         (is_recursive_action): Function no longer used; delete it.
197         (action_class): New static inline function; implement and use it...
198         (pkgXmlDocument::ResolveDependencies): ...here, to identify scheduling
199         requirements for packages which are already installed; depends on...
200         (request_mode): ...this new automatic variable; it augments and...
201         (recursive_mode): ...replaces this one; rename it accordingly.
202         (viable): Automatic variable no longer used; delete it.
203         [DEBUG_REQUEST & DEBUG_TRACE_DEPENDENCIES]: Emit notification for
204         scheduled installation.
205         (pkgXmlDocument::Schedule): Add an implied...
206         (ACTION_REMOVE): ...when scheduling a reinstallation.
207
208 2012-03-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
209
210         Address reinstallation issues per MinGW-Bugs #3416013 and #3424406
211
212         * src/pkgexec.cpp (reinstall_action_scheduled): New inline function.
213         (pkgActionItem::Execute): Use it to identify cases where...
214         [--reinstall]: ...implicit package removal is required, and also to
215         facilitate improved progress reporting in such cases.
216
217         * src/pkgdeps.cpp (is_recursive_action): New inline function.
218         (pkgXmlDocument::ResolveDependencies): Use it in tandem with...
219         (recursive_mode): ...this new automatic variable, so as to handle...
220         [meta-package dependency]: ...implicit recursion, to extend the scope
221         of the current action to the first level of non-meta dependency.
222         [install --reinstall]: ...reinstall original version of nominated
223         package, ignoring any available upgrade; extend scope of operation...
224         [install --reinstall --recursive]: ...to all prerequisite packages.
225         [upgrade --reinstall]: ...upgrade nominated package if possible; if no
226         upgrade available, reinstall current version; extend scope...
227         [upgrade --reinstall --recursive]: ...to all prerequisites.
228         (pkgXmlDocument::Schedule): Partially revert 2012-03-05 change;
229         reimplement selectively; never promote...
230         [install, install --reinstall]: ...these operations to become...
231         [upgrade]: ...this, even if available; issue diagnostic instead.
232
233 2012-03-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
234
235         Rationalise implementation and usage of --all-related option.
236
237         * src/pkgopts.h: Update copyright notice; add year 2012.
238         (OPTION_RECURSIVE, OPTION_ALL_RELATED): New constants; define them.
239         (pkgOpts::SetFlags): New method; declare and implement it inline.
240
241         * src/clistub.c: Update copyright notice; add year 2012.
242         (options) [recursive, all-related]: Redefine in terms of...
243         (OPTION_RECURSIVE, OPTION_ALL_RELATED): ...these.
244         (help_text): Update appropriately.
245
246         * src/climain.cpp: Update copyright notice; add year 2012.
247         (climain) [all-related]: Associate its use exclusively with...
248         (source, licence): ...these package processing operations; use...
249         (pkgOptions::SetFlags): ...this, to propagate its effect.
250
251 2012-03-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
252
253         Don't report failed downloads in respect of virtual packages.
254
255         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): Clear...
256         [ACTION_DOWNLOAD]: ...this status flag for any package identified as
257         a meta-package; this corrects a further regression introduced with the
258         2011-11-09 update, whereby pending download requests for such virtual
259         packages were not cancelled, resulting in failure to install due to
260         failed downloads, when no download is actually required.
261
262 2012-03-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
263
264         Don't suppress implied downloads for top-level actions.
265
266         * src/pkgdeps.cpp: Update copyright notice for new year.
267         (pkgXmlDocument::Schedule) [!OPTION_PRINT_URIS]: Ensure that...
268         [ACTION_DOWNLOAD]: ...this is enabled, when scheduling an install or
269         an upgrade action for a package specified as a command line argument;
270         this corrects a regression introduced on 2011-11-09, which resulted in
271         ACTION_DOWNLOAD being enabled only for second tier dependent actions.
272
273 2012-02-20  Keith Marshall  <keithmarshall@users.sourceforge.net>
274
275         Copyright notice updates.
276
277         * Makefile.in: Add 2012 as year of republication.
278         * src/pkgbase.h src/sysroot.cpp src/pkgexec.cpp: Likewise.
279         * src/rites.c src/pkginst.cpp src/pkgunst.cpp: Likewise.
280
281 2012-02-20  Keith Marshall  <keithmarshall@users.sourceforge.net>
282
283         Fix ill-advised optimisation in $APPROOT environment lookup.
284
285         * src/rites.c (approot_path): Don't save result of getenv() lookup
286         across calls; the environment may have been moved in the interim,
287         making the original result invalid on any subsequent call.  Also,
288         prefer MS-Windows style (with backslashes) for default.
289         (pkgLastRites): Report full path name for lastrites.exe, on execl()
290         failure, rather than only the path relative to $APPROOT.
291
292 2012-02-20  Keith Marshall  <keithmarshall@users.sourceforge.net>
293
294         Propagate sysroot path settings to scripts via the environment.
295
296         * src/pkgbase.h (PKG_PUTENV_FLAGS_MASK): New constant; it maps...
297         (PKG_PUTENV_DIRSEP_MSW, PKG_PUTENV_DIRSEP_POSIX): ...these flags...
298         (PKG_PUTENV_SCAN_VARNAME, PKG_PUTENV_NAME_TOUPPER): ...and these;
299         they are used to specify optional behavioural choices for...
300         (pkgPutEnv): ...this new function; declare it.
301
302         * src/sysroot.cpp (pkgPutEnv): Implement it.
303         (pkgXmlDocument::LoadSystemMap): Use it to add $SUBSYSTEM_SYSROOT path
304         specifications to the environment, for each named subsystem associated
305         with the active system map.
306
307         * src/pkgexec.cpp (pkgActionItem::Execute): Invoke pkgPutEnv() prior
308         to processing of each package install, upgrade, or remove action, so
309         as to update environment variable $SYSROOT to represent the sysroot
310         path for each package processed, during execution of script hooks.
311
312 2012-02-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
313
314         Implement hooks to support lua scripting interface.
315
316         * Makefile.in (LIBS): Add -llua.
317
318         * src/pkgbase.h (pkgXmlNode::InvokeScript): New method; declare it
319         as private, and provide overloaded public inline API implementation.
320         (pkgXmlNode::DispatchScript): New private method; declare it.
321
322         * src/pkgexec.cpp (pkgXmlNode::InvokeScript): Implement it.
323         (pkgXmlNode::DispatchScript): Likewise; it directs InvokeScript to...
324         (pkgInvokeScript): ...this new static function; implement it.
325
326         * src/pkginst.cpp (pkgInstall): Call InvokeScript as appropriate.
327         * src/pkgunst.cpp (pkgRemove): Likewise.
328
329 2011-11-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
330
331         Avoid implicit cast warnings; reported by Robert Hartmann.
332
333         * src/dmh.h (DMH_BEGIN_DIGEST): Explicitly cast to uint16_t.
334         (DMH_END_DIGEST): Likewise.
335
336 2011-11-09  Keith Marshall  <keithmarshall@users.sourceforge.net>
337
338         Avoid unnecessary downloads for already installed packages.
339
340         * src/pkginet.cpp (pkgActionItem::DownloadSingleArchive): Require
341         external scheduling of ACTION_DOWNLOAD; cancel the scheduled request
342         on completion, or when not required due to pre-existing local copy.
343
344         * src/climain.cpp (pkgActionItem::GetSourceArchive): Must always be
345         prepared to download the associated archive; enable ACTION_DOWNLOAD.
346
347         * src/pkgexec.cpp (pkgActionItem::Schedule) [OPTION_REINSTALL]:
348         May need to download the archive, even when the requested package was
349         previously installed; schedule ACTION_DOWNLOAD to enable this.
350
351         * src/pkgdeps.cpp (promote): Macro redefined in terms of...
352         (with_flags, with_download): ...these new macros; implement and...
353         (pkgXmlDocument::ResolveDependencies): ...use them to enable/schedule
354         ACTION_DOWNLOAD only when expected that it may be necessary.
355
356 2011-11-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
357
358         Fix packaging anomalies for source and licence distributions.
359
360         * Makefile.in (licdist): Link README from ${CURDIR}, not from '..'.
361         (srcdist): Explicitly link pkginfo.c from ${CURDIR} to src/pkginfo,
362         rather than as implied prerequisite; this avoids a bogus attempt to
363         link srcdist-doc into src/pkginfo.
364
365 2011-11-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
366
367         Bump version number for subsequent CVS snapshots.
368
369         * configure.ac (AC_INIT): Set version to 0.4-alpha-1.1cvs
370
371 2011-11-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
372
373         mingw-get-0.4-mingw32-alpha-1 released.
374
375         * configure.ac (AC_INIT): Adjust version number.
376         * srcdist-doc/NEWS.in: Updated; document new features and bugs fixed.
377         * All files (r0-4-alpha-1): Tag assigned.
378
379 2011-11-04  Keith Marshall  <keithmarshall@users.sourceforge.net>
380
381         Don't upgrade installed DLL components to incompatible version.
382         Provide clearer diagnostics for failed requests on implied packages.
383
384         * src/pkgdeps.cpp (is_abi_compatible): New static inline function.
385         (pkgXmlDocument::ResolveDependencies) [is_installed]: Use it.
386         (pkgXmlDocument::ResolveDependencies) [DEBUG_TRACE_DEPENDENCIES]:
387         Clean up and improve diagnostic message content and formatting.
388         (pkgXmlDocument::Schedule) [(upgrade || remove) && ! installed]:
389         Downgrade diagnostic to WARNING, for implicitly specified component
390         packages; provide additional explanatory diagnostics.
391
392         * src/pkgspec.cpp (pkgSpecs::VersionComparator):
393         * src/pkgexec.cpp (pkgActionItem::SelectIfMostRecentFit):
394         [DEBUG_TRACE_DEPENDENCIES]: Eliminate diagnostic noise.
395
396 2011-10-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
397
398         Fix --download-only vs. --reinstall conflict.
399
400         * src/pkgexec.cpp (pkgActionItem::Execute) [OPTION_DOWNLOAD_ONLY]:
401         Test for explicit inequality, rather than equality to zero; since the
402         2011-08-30 update, which made --download-only also imply --reinstall,
403         it will test as non-zero when --reinstall is specified, even though
404         --download-only is not.
405
406 2011-10-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
407
408         Add support for non-specific upgrade of all installed packages.
409
410         * src/pkgbase.h (pkgXmlDocument::RescheduleInstalledPackages):
411         New public method; declare it.
412
413         * src/pkgdeps.cpp (pkgXmlDocument::RescheduleInstalledPackages):
414         Implement it.
415
416         * src/climain.cpp (climain) [ACTION_UPGRADE && argc < 2]: Invoke
417         pkgXmlDocument::RescheduleInstalledPackages() to schedule the upgrade
418         request for all packages currently registered as installed.
419
420 2011-10-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
421
422         Implement "source" and "licence" operations.
423
424         * src/pkgopts.h (OPTION_ALL_DEPS): New option code; define it.
425         * src/clistub.c (main): Associate it with...
426         (all-related, recursive): ...these synonymous option names...
427         (options): ...defined within this local structured array.
428         (help_text): Document them; also document "source" and "licence" as
429         new operations which may be specified on the command line.
430
431         * src/pkgtask.h (action_source, action_licence): Enumerate them.
432         (ACTION_SOURCE, ACTION_LICENCE): Define their manifest values, and...
433         * src/pkgexec.cpp (action_name): ...associate with operation names.
434
435         * src/pkgbase.h (pkgActionItem::GetScheduledSourceArchives):
436         (pkgActionItem::GetSourceArchive, pkgXmlDocument::GetSourceArchive):
437         New public methods; declare them for external implementation.
438         (pkgXmlDocument::GetScheduledSourceArchives): New public method;
439         implement it as inline.
440
441         * src/climain.cpp (pkgProcessedArchives): New pointer to stack of...
442         (pkgArchiveNameList): ...this new locally defined class; implement it.
443         (pkgActionItem::GetSourceArchive, pkgXmlDocument::GetSourceArchive):
444         (pkgActionItem::GetScheduledSourceArchives): Implement them.
445         (climain): Add invocation hooks.
446
447 2011-10-04  Keith Marshall  <keithmarshall@users.sourceforge.net>
448
449         Establish mapping from release tarname to source tarname.
450
451         * src/pkgreqs.cpp (inherited_requirement): New inline function.
452         (requirement): Use it; adapt to propagate release archive format and
453         compression type fields, in addition to version fields, when resolving
454         "%" wildcard matches within the template for the resultant tarname.
455         (pkgAssociateName): New public function; implement it for use by...
456         * src/pkgname.cpp (pkgResolvedName): ...this new inline function.
457         (pkgXmlNode::SourceArchiveName): Use it; adapt to accept a category
458         selector, so it may resolve source or licence tarnames on demand.
459
460         * src/pkgbase.h (pkgXmlNode::SourceArchiveName): Modify declaration;
461         add category selector argument to support source/licence choice.
462
463 2011-10-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
464
465         Facilitate downloads using diverse cache directories.
466
467         * src/pkgbase.h (pkgActionItem::DownloadSingleArchive): New private
468         method; declare it; it handles the download for a single named archive
469         file, and stores it in a specifed cache directory.
470
471         * src/pkginet.cpp (pkgActionItem::DownloadSingleArchive): Implement
472         it; factor its code from the original implementation within...
473         (pkgActionItem::DownloadArchiveFiles): ...this; adapt to use it.
474
475 2011-10-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
476
477         Establish cache directory for source archive downloads.
478
479         * src/mkpath.h (pkgSourceArchivePath): New function; declare it.
480         * src/mkpath.c (pkgSourceArchivePath): Implement it.
481
482 2011-08-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
483
484         Support archive extraction to arbitrary destination without install.
485
486         * src/pkgproc.h (pkgArchiveProcessor::ExtractFile): New virtual
487         helper method for use, as core helper, by derived classes; declare it.
488         (pkgArchiveProcessor::CreateExtractionDirectory): Likewise.
489         (pkgTarArchiveProcessor): Declare overloaded default constructor.
490         (pkgTarArchiveExtractor): New class definition; it is derived from
491         pkgTarArchiveProcessor.
492
493         * src/tarproc.cpp (pkgArchiveProcessor::ExtractFile): Implement it.
494         (pkgArchiveProcessor::CreateExtractionDirectory): Likewise.
495         (pkgTarArchiveExtractor): Implement constructor, together with...
496         (pkgTarArchiveExtractor::ProcessDirectory): ...this method, and also...
497         (pkgTarArchiveExtractor::ProcessDataStream): ...this one; these are
498         declared as abstract, in the pkgTarArchiveProcessor base class.
499         (pkgTarArchiveInstaller::ProcessDirectory): Simplify; it now delegates
500         directory creation to pkgArchiveProcessor::CreateExtractionDirectory.
501         (pkgTarArchiveInstaller::ProcessDataStream): Simplify; delegate file
502         handling to pkgArchiveProcessor::ExtractFile, as appropriate.
503
504 2011-08-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
505
506         Make --download-only and --print-uris imply --reinstall.
507
508         * src/pkgopts.h (OPTION_PRINT_URIS): Adjust definition.
509         (OPTION_DNLOAD_ONLY, OPTION_DOWNLOAD_ONLY): Likewise.
510
511 2011-08-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
512
513         Implement --download-only and --print-uris options.
514
515         * src/pkgopts.h (OPTION_DOWNLOAD_ONLY, OPTION_PRINT_URIS):
516         New manifest constants, identifying flag bits; define them.
517         (OPTION_DNLOAD_ONLY): Likewise; an alias for OPTION_DOWNLOAD_ONLY.
518
519         * src/pkgbase.h (pkgActionItem::PrintURI): New private method.
520         * src/pkginet.cpp: Implement it.
521
522         * src/clistub.c (options): Add "download-only" and "print-uris".
523         (help_text): Document them.
524         * src/pkgexec.cpp (pkgActionItem::Execute): Process them.
525
526 2011-07-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
527
528         mingw-get-0.3-mingw32-alpha-2.1 released.
529
530         * configure.ac (AC_INIT): Adjust version number.
531         * srcdist-doc/NEWS.in: Updated; document bugs fixed.
532         * All files (r0-3-alpha-2-1): Tag assigned.
533
534 2011-07-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
535
536         Adopt tar.xz as default package archive format.
537
538         * Makefile.in (TARZIP, TAREXT): New macros; define them.
539         (bindist, licdist, srcdist): Use them in place of hardcoded tar.gz
540         (maintainer-clean): Expunge tar files of any compression format.
541
542 2011-07-27  Keith Marshall  <keithmarshall@users.sourceforge.net>
543
544         Correct handling of release status in requirements specifications.
545
546         * src/debug.h (DEBUG_TRACE_DEPENDENCIES): New tracing hook; define it.
547         * src/pkgexec.cpp (pkgActionItem::SelectIfMostRecentFit): Use it; add
548         function entry/exit tracing report hooks.
549         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies): Likewise;
550         also add internal trace point reporting, which may also require...
551         (show_required): ...this new static inline DEBUG_INVOKED function.
552
553         * src/pkgreqs.cpp (requirement): Propagate release status and release
554         reference index fields from requirer, when package version requirement
555         is specified by a '%' token, and no explicit release status override
556         is included in the requirement specification.
557
558         * src/pkgspec.cpp (is_wildcard_spec): New static inline helper.
559         (pkgSpecs::VersionComparator): Use it to identify any package version
560         specification which may require the extension of a wildcard match, to
561         span the package version and release status fields; also add tracing
562         hooks, triggered on DEBUG_TRACE_DEPENDENCIES, to facilitate debugging.
563
564 2011-06-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
565
566         Avoid accidental RCS keyword substitutions.
567
568         * Makefile.in (DOLLAR): New macro; define it.
569         (readme.txt, readme.txt.in): Use it, where unexpanded RCS Id keyword
570         matching is intended.
571
572 2011-06-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
573
574         Mercurial support revisited.
575
576         * .cvsignore (.hgtags): Add to CVS untracked list.
577
578 2011-06-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
579
580         Update readme.txt ID tag-line to track NEWS rather than README.
581
582         * Makefile.in (readme.txt.in): New rule; implement it.
583         (readme.txt.tag): Likewise; this implements the tag-line tracking.
584         (readme.txt): Rule redefined in terms of the preceding pair.
585
586 2011-06-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
587
588         mingw-get-0.3-mingw32-alpha-2 released.
589
590         * configure.ac (AC_INIT): Adjust version number.
591         * srcdist-doc/NEWS.in: Updated; document new features and bugs fixed.
592         * All files (r0-3-alpha-2): Tag assigned.
593
594 2011-06-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
595
596         Add internal documentation for --reinstall option.
597
598         * src/clistub.c (help_text): Add description for "--reinstall".
599
600 2011-06-14  Keith Marshall  <keithmarshall@users.sourceforge.net>
601
602         Support use of Mercurial within a CVS working copy.
603
604         * .cvsignore (.hg, .hgignore): Don't have CVS track these.
605
606 2011-06-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
607
608         Implement --reinstall option.
609
610         * src/pkgopts.h (OPTION_REINSTALL): New macro; define it.
611         (OPTION_GENERIC, OPTION_SHIFT_MASK): Likewise.
612         (OPTION_EXTRA_FLAGS): New field; declare it.
613
614         * src/clistub.c (options): Add "reinstall".
615         (OPTION_GENERIC): Use it where appropriate; within its scope...
616         (OPTION_STORAGE_CLASS): Improve descriptive comments; add handling for
617         default case of flag type options requiring an alignment shift.
618
619         * src/pkgexec.cpp: Remove previous "always reinstall" kludge.
620         (pkgOptionSelected, PKG_OPTION_REINSTALL): Remove obsolete macros.
621         (pkgActionItem::Execute): Check for "upgrade" request on any package
622         which is already up to date; report this state, otherwise...
623         [OPTION_REINSTALL || ACTION_UPGRADE]: Mark package as "removed", to
624         avoid bail-out on "package already installed", when calling...
625         (pkgInstall): ...this.
626
627 2011-06-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
628
629         Don't require -vv to report progress of update operation.
630
631         * src/pkgbind.cpp (pkgRepository::GetPackageList): Eliminate all
632         basename() calls; `dname' already tells us what it should return.
633         [update]: Report progress, irrespective of verbosity setting.
634
635 2011-06-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
636
637         Fix MinGW-Bug #3313806.
638
639         * src/pkginfo/pkginfo.l (CMS_KEYWORDS): Do not match them within the
640         PACKAGE_NAME field; this avoids misinterpretation as a release status
641         qualifier when intended as part of the package name, as in msys-cvs.
642
643 2011-06-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
644
645         Provisional correction for MinGW-Bug #3309438.
646
647         * src/debug.h [DEBUGLEVEL == 0]: Provide defaults for...
648         (DEBUG_ENABLED, DEBUG_REQUEST): ...these macros.
649
650         * src/tarproc.cpp (pkgTarArchiveInstaller::ProcessDirectory):
651         (pkgTarArchiveInstaller::ProcessDataStream): Use DEBUG_REQUEST to
652         enable runtime trace activation for previous compile time choices.
653
654 2011-05-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
655
656         mingw-get-0.3-mingw32-alpha-1 released.
657
658         * configure.ac (AC_INIT): Adjust version number.
659         * srcdist-doc/NEWS.in: Updated; document new features.
660         * All files (r0-3-alpha-1): Tag assigned.
661
662 2011-05-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
663
664         Support assignment of DEBUGLEVEL at configure time.
665
666         * configure.ac (DEBUGLEVEL): Declare as a precious variable, using
667         AC_ARG_VAR; also declare with AC_SUBST, to ensure it is initialised.
668
669         * Makefile.in (DEBUGLEVEL): Let AC_SUBST assign it.
670
671 2011-05-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
672
673         Work around bugs in MinGW and GNU getopt_long_only() implementations.
674
675         * src/getopt.c: New file; this is a free-standing replacement for any
676         implementation provided by system libraries.  We will always use this
677         to ensure correct operation irrespective of system bugs; (different
678         bug manifestations have been identified in the stock MinGW and GNU
679         implementations).
680
681         * Makefile.in (mingw-get.EXEEXT): Use it.
682
683         * src/clistub.c (options): Remove redundant declaration of `-v' as a
684         long form option.
685
686 2011-05-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
687
688         Implement user selection of traceable features at run-time.
689
690         * src.pkgopts.h (OPTION_VERBOSE_MAX): New macro; define it.
691
692         * src/debug.h (DEBUG_ENABLED): New macro; define it.
693         (DEBUG_REQUEST, DEBUG_REQUEST_FLAGS, DEBUG_TRACE_DYNAMIC): Likewise.
694
695         * src/clistub.c (main) [--trace]: Don't make it available unless...
696         [DEBUG_ENABLED(DEBUG_TRACE_DYNAMIC)]: ...this is set (at compile-time).
697         [--verbose]: Limit to OPTION_VERBOSE_MAX, using...
698         (atmost): ...this new macro; define it.
699         (options): Declare `-v' as both long and short form, pending bug fix
700         in MinGW's getopt_long_only() implementation.
701
702         * src/pkginet.cpp (pkgInternetAgent::OpenURL): Use DEBUG_REQUEST.
703         (pkgInternetLzmaStreamingAgent::TransferData): Likewise.
704         (pkgInternetStreamingAgent::TransferData): Likewise.
705         (pkgInternetStreamingAgent::Get): Likewise.
706
707         * src/pkgunst.cpp (pkgActionItem::SetAuthorities): Use DEBUG_REQUEST.
708         (pkg_rmdir, pkg_unlink): Likewise.
709
710         * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Use DEBUG_REQUEST.
711
712 2011-05-21  Keith Marshall  <keithmarshall@users.sourceforge.net>
713
714         Implement protocol for processing global program options.
715
716         * src/pkgopts.h: New file.
717
718         * src/climain.cpp (cli_setopts): New function; implement it.
719         (pkgOptions): Likewise.
720
721         * src/clistub.c (xatoi): New function; implement it.
722         (cli_setargv): New inline helper function; implement it.
723         (main): Use it.  Also incorporate implementation of...
724         (parsed_options): New structure; it accommodates...
725         (verbose, trace): New options; interpret them, and...
726         (help_text): ...document them.
727
728         * src/pkgbind.cpp (pkgRepository::GetPackageList): Make catalogue
729         loading notifications and progress reports conditional on...
730         [OPTION_VERBOSE > 1]: ...this.
731
732 2011-05-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
733
734         Augment known development status keywords and accept CMS labels.
735
736         * src/pkginfo/pkginfo.l (CMS_KEYWORDS): Define new provisional list;
737         add transitional state scanner rule and code to interpret them.
738         (STATUS_KEYWORDS): Add "pre" and "rc" to existing list; modify scanner
739         code to maintain consistency with CMS_KEYWORDS processing; also extend
740         this coding strategy to other rules.
741
742         * src/pkginfo/driver.c (spec): Strip initial '$' token from displayed
743         field values; (we expect it only for a CMS_KEYWORDS field value).
744
745         * src/pkgreqs.cpp (pkgSpecs::GetTarName): Remove any initial '$' token
746         from PACKAGE_RELEASE_STATUS field, when performing reverse of tarname
747         decomposition transformation.
748
749 2011-05-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
750
751         Correct omission from 2011-02-18 commit.
752
753         * src/tarproc.cpp (Copyright Notice): Add 2011 as year of release.
754
755 2011-05-14  Keith Marshall  <keithmarshall@users.sourceforge.net>
756
757         mingw-get-0.2-mingw32-alpha-4 released.
758
759         * configure.ac (AC_INIT): Adjust version number.
760         * srcdist-doc/NEWS.in: Updated; add bug-fix/feature descriptions.
761         * All files (r0-2-alpha-4): Tag assigned.
762
763 2011-05-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
764
765         Fix MinGW-Bug #3297660 (reported by Chris Sutcliffe).
766
767         * src/pkgbase.h (pkgActionItem::SetAuthorities): Return unsigned long.
768         (pkgActionItem::HasAttribute): New inline method; implement it.
769
770         * src/pkgtask.h (ACTION_DOWNLOAD, ACTION_DOWNLOAD_OK): New macros.
771
772         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles):
773         [ACTION_DOWNLOAD]: Assert it at commencement of each package download;
774         clear it again, on successful download completion.
775
776         * src/pkginst.cpp (pkgtask.h): #include it.
777         (pkgInstall) [ACTION_DOWNLOAD]: Don't proceed with installation when
778         set; this indicates failed download; diagnose it.
779
780         * src/pkgunst.cpp (pkgRemove) [ACTION_DOWNLOAD && ACTION_UPGRADE]:
781         Don't proceed with pre-emptive removal when both set; this indicates
782         failed download of replacement package; diagnose it.
783
784 2011-05-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
785
786         Fix MinGW-Bug #3295526 (reported by Charles Wilson).
787
788         * src/pkgunst.cpp (sys/stat.h): #include it; we need it for...
789         (pkg_unlink): ...chmod( file, S_IWRITE ), emulating `rm -f' semantics.
790
791 2011-05-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
792
793         Diagnose and aggressively retry failed download connections.
794
795         * src/debug.h (DEBUG_TRACE_INTERNET_REQUESTS): New macro; define it.
796
797         * src/pkginet.cpp (debug.h): #include it.
798         (pkgDownloadMeter): New abstract class; declare it and implement its
799         default (non-abstract) data and methods; derive...
800         (pkgDownloadMeterTTY): ...this new class from it; implement it...
801         (pkgInternetStreamingAgent::Get): ...and instantiate it (naively for
802         now), as associated pkgDownloadMeter object; add tracing diagnostic.
803         (pkgInternetAgent::OpenURL): Don't inline it; move implementation out
804         of line; add retry loops to aggressively retry failed connections.
805         (pkgInternetAgent::QueryContentLength): New method; implement it.
806         (pkgInternetStreamingAgent::TransferData): Avoid Microsoft specific
807         data type `DWORD'; prefer equivalent standard `unsigned long'.  Add
808         tracing diagnostic.  Remove progress diagnostic; replace it with an
809         `Update' request to associated pkgDownloadMeter.
810         (pkgInternetLzmaStreamingAgent::GetRawData): Avoid `DWORD' data type.
811         (pkgInternetLzmaStreamingAgent::TransferData): Likewise; add tracing
812         diagnostic on failure.
813
814 2011-03-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
815
816         mingw-get-0.2-mingw32-alpha-3 released.
817
818         * configure.ac (AC_INIT): Adjust version number.
819         * srcdist-doc/NEWS.in: Updated; add bug-fix description.
820         * All files (r0-2-alpha-3): Tag assigned.
821
822 2011-03-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
823
824         Provisional handling for http proxy authentication.
825         (Adapted from patch by Scott Michel <pingbak@users.sourceforge.net>)
826         (ref: MinGW-Patch #3158453)
827
828         * src/pkginet.cpp: Several format/layout adjustments; add comments.
829         Eliminate several instances of Microsoft specific typedef nastiness.
830         (dmh_dialogue_context): New macro; kludge definition to support...
831         (pkgInternetAgent::OpenURL) [HTTP_STATUS_PROXY_AUTH_REQ]: Detect
832         and handle it.
833
834 2011-03-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
835
836         Expand macros in path names for files and directories to be removed.
837
838         * src/pkgunst.cpp (pkgRemove): Format sysroot as a template, so...
839         (pkg_rmdir, pkg_unlink): ...are able to use mkpath() to construct the
840         full path name for each file or directory to be removed.
841
842 2011-03-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
843
844         Correct defective activation logic for some debugging hooks.
845
846         * src/pkgunst.cpp (pkg_rmdir, pkg_unlink) [DEBUG_INVOKE_IF]:
847         (pkgActionItem::SetAuthorities) [DEBUG_INVOKE_IF]: Use bit-wise `&'
848         operator, not `&&', to evaluate DEBUGLEVEL state.
849
850 2011-03-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
851
852         Avoid Unicode hyphens in generated ASCII document files.
853
854         * Makefile.in (NROFF): New macro; define it to invoke `nroff -Tascii'.
855         (%.dist, readme.txt): Use it to ensure that output is pure ASCII.
856
857 2011-03-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
858
859         mingw-get-0.2-mingw32-alpha-2 released.
860
861         * configure.ac (AC_INIT): Adjust version number.
862         * srcdist-doc/NEWS.in: Updated; add bug-fix description.
863         * All files (r0-2-alpha-2): Tag assigned.
864
865 2011-03-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
866
867         Fix MinGW-Bug 3212246.
868
869         * src/keyword.c (has_keyword): Avoid incrementing the comparison
870         pointers when a significant character in one string is not matched in
871         the other; previously the pointers were left pointing one character to
872         the right of the mismatch, and this was overlooked if the mismatch
873         occurred at the rightmost character in both strings.
874
875 2011-03-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
876
877         mingw-get-0.2-mingw32-alpha-1 released.
878
879         * configure.ac (AC_INIT): Set version number; correct capitalisation
880         in URI reference to bug reporting instructions.
881
882         * srcdist-doc/NEWS.in: Confirm release date.
883         [bug reporting]: Remove redundant paragraph; the information is
884         provided, via reference to mingw.org. in the README and INSTALL files.
885
886         * All files (r0-2-alpha-1): Tag assigned.
887
888 2011-03-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
889
890         * srcdist-doc/INSTALL.in [building]: Qualify liblzma.a requirement;
891         add earliest acceptable snapshot release date.
892
893 2011-03-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
894
895         Remove unused 7zip and boost source code from CVS trunk.
896
897         * 7z: Directory and all content removed.
898         * boost: Likewise.
899
900 2011-03-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
901
902         Refactor and update existing installation and usage instructions.
903
904         * src/clistub.c (help_text): Updated.
905
906         * srcdist-doc: New directory.
907
908         * README: Deleted; its content refactored into...
909         * srcdist-doc/README.in srcdist-doc/INSTALL.in srcdist-doc/NEWS.in:
910         ...these new template files, updated for current development state.
911
912         * srcdist-doc/gendoc.sed.in: New sed script; it directs formatting of
913         generated text files derived from the srcdist-doc templates.
914
915         * Makefile.in (SRCDIST_SUBDIRS): Add srcdist-doc.
916         (SRCDIST_FILES): Add NEWS and INSTALL.
917         (srcdist-doc): New build rule to generate README, NEWS and INSTALL.
918         (srcdist, licdist): Adjust path to locate them.
919         (readme.txt): New build rule to generate on-line package description.
920         (dist): Require it.
921         (distclean): Don't remove Makefile...
922         (maintainer-clean): ...but do it here instead.  Also remove generated
923         README, NEWS and INSTALL, the autom4te cache, and all distributable
924         zip files, in addition to tarballs, for the current version.
925
926 2011-02-27  Keith Marshall  <keithmarshall@users.sourceforge.net>
927
928         Initial implementation for "remove" feature.
929
930         * src/pkgbase.h: Update copyright notice; add current year.
931         (pkgActionItem::SetPrimary): New inline public method; declare it.
932         (pkgActionItem::SetAuthorities): New public method; declare it.
933
934         * src/pkgtask.h (ACTION_PREFLIGHT, ACTION_REMOVE_OK): New defines.
935
936         * src/pkgproc.h: Update copyright notice; add current year.
937         (pkgManifest::GetSysRootReference): New public method; declare it.
938         (pkgManifest::GetRoot): New inline method; declare and implement it.
939         (pkgManifest::DetachSysRoot): Argument type changed to const char*.
940         (pkgRemove): New extern "C" function; declare it.
941
942         * src/pkgexec.cpp (pkgActionItem::SetPrimary): Implement it, and...
943         (pkgXmlDocument::Schedule): ...use it to promote actions on all user
944         specified packages, as listed on the command line, to primary status.
945         (pkgActionItem::Execute): Repeatedly invoke...
946         (pkgActionItem::SetAuthorities): ...this; incorporate call of...
947         (pkgActionItem::DownloadArchiveFiles): ...this, within the loop, so
948         that we retry failed downloads at least a second time.
949         [ACTION_REMOVE]: Delete stub; invoke pkgRemove().
950
951         * src/pkgunst.cpp: New file.
952         (pkgActionItem::SetAuthorities): Implement it.
953         (pkgManifest::GetSysRootReference): Implement it.
954         (pkgManifest::DetachSysRoot): Implement it per new declaration.
955         (pkgRemove): Implement it.
956
957         * Makefile.in (CORE_DLL_OBJECTS): Add pkgunst.OBJEXT
958
959 2011-02-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
960
961         Work-around for improper stderr buffering in MSYS mintty and rxvt.
962         (Merged from r0-1-alpha-5 branch).
963
964         * src/dmh.cpp (dmhTypeTTY::emit_and_flush): New private method.
965         (dmhTypeTTY::printf, dmhTypeTTY::notify): Use it to force an fflush()
966         after each output record is written to stderr.
967
968         * README: Update as appropriate.
969
970 2011-02-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
971
972         Tidy up some debugging hooks.
973
974         * src/debug.h (DEBUG_INVOKED): New macro; define it.
975         (DEBUG_INVOKE_IF): Likewise; this takes arguments providing for
976         conditional invocation of code when DEBUGLEVEL is non-zero; make it
977         expand to nothing, when DEBUGLEVEL is zero.
978         (DEBUG_TRACE_INIT): Redefined macro; value changed to 0x0010.
979         (DEBUG_TRACE_TRANSACTIONS, DEBUG_SUPPRESS_INSTALLATION):
980         (DEBUG_UPDATE_INVENTORY): New macros; define them.
981
982         * src/tarproc.cpp (pkgTarArchiveInstaller::ProcessDirectory):
983         (pkgTarArchiveInstaller::ProcessDataStream): Refactor debugging hooks;
984         implement them in terms of DEBUGLEVEL, with reference to...
985         (DEBUG_SUPPRESS_INSTALLATION, DEBUG_UPDATE_INVENTORY): ...these.
986
987 2011-02-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
988
989         Make package version comparisons more robust.
990
991         Fixes an issue reported by Chris Sutcliffe: previously, version
992         comparisons were evaluated solely on the basis of differences in the
993         package version field itself.  Henceforth, if this field compares as
994         equal, then the comparison is extended to also consider differences
995         between development phase qualifiers, and, if these too compare as
996         equal, to differences in the target subsystem version fields.
997
998         * src/pkginfo/pkginfo.h (pkgSpecs::VersionComparator): New private
999         method; declare it.
1000
1001         * src/pkgspec.cpp (pkgSpecs::VersionComparator): Implement it.
1002         (pkgSpecs::operator<, pkgSpecs::operator<=, pkgSpecs::operator>=):
1003         (pkgSpecs::operator>): Use it, replacing...
1004         (version): ...this static function; now unreferenced; delete it.
1005
1006         * src/vercmp.h (pkgVersionInfo::pkgVersionInfo): Make it inline; it
1007         now delegates the entire class construction operation to...
1008         (pkgVersionInfo::Parse): ...this new private method; declare it.  This
1009         is also used to facilitate implementation of...
1010         (pkgVersionInfo::Reset): ...this new inline method, also requiring...
1011         (pkgVersionInfo::FreeAll): ...this new inline method; also now used by
1012         the class destructor, it encapsulates separate calls to...
1013         (pkgVersionInfo::Free): ...this original inline method, renamed...
1014         (pkgVersionInfo::FreeEntry): ...as this.
1015
1016         * src/vercmp.cpp (pkgVersionInfo::Parse): Implement it.
1017
1018 2011-02-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
1019
1020         Merge from mingw-get-0.1-mingw32-alpha-5 bug-fix branch.
1021
1022         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies): Promote
1023         "install" action on new prerequisites, where a previously uninstalled
1024         package is required to satisfy any "upgrade" dependency.
1025
1026         * src/pkgexec.cpp (pkgActionList::Execute): Don't make misleading
1027         claims concerning package removal.
1028
1029         * src/pkgtask.h (STRICTLY_GT, STRICTLY_LT, ACTION_PRIMARY): Add one
1030         level of parentheses around defining expressions.
1031
1032 2011-02-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
1033
1034         Publish mingw-get-0.0-mingw32-alpha-5.1 bug-fix release.
1035
1036         * README: Updated to reflect changes.
1037
1038 2011-02-08  Keith Marshall  <keithmarshall@users.sourceforge.net>
1039
1040         Improve diagnostics for failed GUI invocation.
1041
1042         * src/guimain.cpp: New file; currently delivers only a diagnostic
1043         stub, provided by Sze Howe Koh <axfangli@users.sourceforge.net>, to
1044         pop-up a message block explaining why GUI mode cannot be invoked.
1045
1046         * Makefile.in (GUI_LDFLAGS): New macro; it is required by...
1047         (gui$EXEEXT): ...this new build rule; add to prerequisites of...
1048         (all): ...this [default] build rule; redefine this in terms of...
1049         (BIN_PROGRAMS, LIBEXEC_PROGRAMS, LIBEXEC_DATA): ...these new macros;
1050         define them, and also use them as loop iterator objectives for...
1051         (install, install_strip): ...these; also schedule them...
1052         (clean): ...for removal by this.
1053
1054         * src/clistub.c (Copyright): Add new year.
1055         (main): Amend error message, if gui$EXEEXT doesn't start; make it
1056         more intelligible to normal users.
1057
1058 2011-02-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
1059
1060         Correct omissions from packaged source tarball.
1061
1062         * Makefile.in (Copyright): Add new year.
1063         (SRCDIST_FILES): Add aclocal.m4
1064         (SRCDIST_SUBDIRS): Add m4
1065
1066 2011-01-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
1067
1068         Reduce path names to base names, in some diagnostic message contexts.
1069
1070         * src/climain.cpp: Update copyright notice for new year.
1071         (climain): Extract base name from argv[0], to pass as program name tag
1072         in initialisation of diagnostic message handler.
1073
1074         * src/dmh.h, src/dmh.cpp: Update copyright notices; make some layout
1075         adjustments, for more consistent formatting style.
1076
1077         * src/pkgbind.cpp: Update copyright notice.
1078         (pkgRepository::GetPackageList): Reduce path names for catalogue files
1079         to their base names, when reporting them in diagnostic messages.
1080
1081 2011-01-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
1082
1083         Avoid a potential out-of-range action name look-up.
1084
1085         * src/pkgdeps.cpp: Update copyright notice for new year.
1086         (pkgXmlDocument::Schedule): Mask action code with ACTION_MASK, to
1087         determine correct action name when diagnosing uninstalled package.
1088
1089 2011-01-03  Keith Marshall  <keithmarshall@users.sourceforge.net>
1090
1091         Make "install" and "remove" notifications symmetric.
1092
1093         * configure.ac (AC_INIT): Bump version to "0.1-alpha-6cvs".
1094         (YEARS_OF_ISSUE): Add new year.
1095         
1096         * src/pkginst.cpp: Update copyright notice for new year.
1097         (pkgInstall): Add notification for package being installed.
1098
1099 2010-12-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
1100
1101         Add preliminary CLI support for "list" and "show" actions.
1102
1103         * src/pkgtask.h (ACTION_PRIMARY): New manifest constant; define it.
1104         (ACTION_LIST, ACTION_SHOW): Likewise; cast to enumerated values for...
1105         (action_list, action_show): ...these; define them.
1106
1107         * src/pkgexec.cpp (action_name): Add defining text for...
1108         (action_list, action_show): ...these.
1109
1110         * src/climain.cpp: Partially revert 2010-11-01 change...
1111         (climain) [! ACTION_UPDATE]: Reinstate original "if" block, moving
1112         the "switch" block within it, but without the ACTION_UPDATE case.
1113         [ACTION_LIST, ACTION_SHOW]: New "switch" cases; they invoke...
1114         (pkgXmlDocument::DisplayPackageInfo): ...this new method.
1115
1116         * src/pkgbase.h (pkgXmlDocument::DisplayPackageInfo): Declare it.
1117         (pkgActionItem::ConfirmInstallationStatus): New method; declare it.
1118         (pkgXmlNode::GetSysRoot): Make declaration style consistent with
1119         others in the class; do not name arguments in the declaration.
1120         (pkgXmlNode::FindFirstAssociate): Likewise.
1121         (pkgXmlNode::FindNextAssociate): Likewise.
1122
1123         * src/pkgshow.cpp: New file.
1124         (pkgXmlDocument::DisplayPackageInfo): Implement it.
1125
1126         * src/pkgdeps.cpp (pkgMsgUnknownPackage): New extern "C" function;
1127         implement it temporarily, pending a future i18n reimplementation.
1128         (assert_installed): Drop "inline" attribute; leave it as "static".
1129         Set "tarname" correctly, to match the installed package version; (it
1130         previously incorrectly returned the latest available version).
1131         (pkgActionItem::ConfirmInstallationStatus): Implement it.
1132         (pkgXmlDocument::Schedule) [ACTION_PRIMARY]: Set as appropriate.
1133         (pkgXmlDocument::Schedule) [ACTION_REMOVE || ACTION_UPGRADE]: Complain
1134         if requested package is not recorded as having been installed.
1135         (pkgXmlDocument::ResolveDependencies) [! ACTION_INSTALL]: Do not
1136         invoke it recursively.
1137
1138         * Makefile.in (pkgshow.$OBJEXT): Add reference.
1139
1140 2010-11-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
1141
1142         Lay groundwork for implentation of additional actions.
1143
1144         * src/climain.cpp (climain): Adjust indentation; replace `if' block...
1145         [action != ACTION_UPDATE]: ...with this default `switch' case, and...
1146         [action == ACTION_UPDATE]: ...this as explicit "do nothing" case.
1147
1148 2010-10-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
1149
1150         mingw-get-0.1-mingw32-alpha-5 released.
1151
1152         * configure.ac (AC_INIT): Bump version to 0.1-alpha-5.
1153         * README: Update release notes accordingly.
1154         * All files (r0-1-alpha-5): Tag assigned.
1155
1156 2010-10-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
1157
1158         Make pkgInitRites/pkgLastRites processing more robust;
1159         avoid a potential race condition in mingw-get-inst.
1160
1161         * src/rites.c: Refactor conditional code to segregate execution of...
1162         [defined IMPLEMENT_INITIATION_RITES]: ...this into distinct phases.
1163         (PHASE_ONE_RITES, PHASE_TWO_RITES): Define constants to identify them.
1164         (do_init_rites): Renamed to...
1165         (invoke_rites): ...this; inline it.
1166         (pkgLastRites): Invoke it, to pre-empt rename action of...
1167         (lastrites.exe): ...this, subsequently exec()ed process.
1168         (perror): Issue more informative diagnostic on exec() failure.
1169
1170         * src/clistub.c (IMPLEMENT_INITIATION_RITES): Stipulate as...
1171         (PHASE_ONE_RITES): ...this phase of implementation only.
1172
1173         * src/pkgexec.cpp (IMPLEMENT_INITIATION_RITES): Define to provide...
1174         (PHASE_TWO_RITES): ...this phase of implementation, facilitated by...
1175         (self_upgrade_rites): ...this locally defined RITES_INLINE function.
1176         (pkgActionItem::Execute): Invoke it, in remove/install loop, while...
1177         [init_rites_pending]: ...new loop local variable remains true.
1178
1179 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
1180
1181         Fix packaging bug in -lic package.
1182
1183         * Makefile.in (licdist): Use directory named
1184         "share", not "shared".
1185
1186 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
1187
1188         mingw-get-0.1-mingw32-alpha-4 released.
1189
1190         * All files (r0-1-alpha-4): Tag assigned.
1191
1192 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
1193
1194         Add rudimentary help option.
1195
1196         * README: Update release notes.
1197
1198         * src/clistub.c: Add --help option.
1199
1200 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
1201
1202         Fix "mingw-get deletes itself" bug in last rites handling.
1203
1204         * README: Add new release notes.
1205
1206         * configure.ac: Bump version to 0.1-alpha-4.
1207
1208         * src/dmh.h: If __cplusplus, include <exception> and
1209         declare dmh_exception class.
1210
1211         * src/dmh.cpp (class dmh_exception): Implement.
1212         (abort_if_fatal): If DMH_FATAL, throw dmh_exception rather
1213         than calling exit().
1214
1215         * src/climain.cpp (climain): Wrap entire function body in try/
1216         catch block. If dmh_exception is caught, return EXIT_FAILURE.
1217
1218         * src/clistub.c (main): Capture return value of climain(). If
1219         non-zero, perform last rites and return EXIT_FAILURE.
1220
1221 2010-08-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
1222
1223         mingw-get-0.1-mingw32-alpha-3 released.
1224
1225         * README: Add new release notes.
1226
1227         * All files (r0-1-alpha-3): Tag assigned.
1228
1229 2010-08-27  Keith Marshall  <keithmarshall@users.sourceforge.net>
1230
1231         Add runtime hooks to support self-upgrade for future releases.
1232
1233         * src/rites.c: New file; compile it free-standing, to provide...
1234         (lastrites.exe): ...this helper application for context clean-up;
1235         alternatively, use it as an include file, with pre-definition of...
1236         (IMPLEMENT_INITIATION_RITES): ...this, to implement...
1237         (pkgInitRites, pkgLastRites): ...these inline functions.
1238
1239         * src/clistub.c (main) [argc > 1]: Use them.
1240         (progname): New local variable within `main'; set it once, then use it
1241         instead of repeated references to `basename(*argv)' in diagnostics.
1242         (MINGW_GET_DLL, MINGW_GET_GUI): Relocate to `src/rites.c'.
1243
1244         * src/debug.h (DEBUG_INHIBIT_RITES_OF_PASSAGE):
1245         (DEBUG_FAIL_FILE_RENAME_RITE, DEBUG_FAIL_FILE_UNLINK_RITE): New
1246         defines; they facilitate debugging of the src/rites.c code.
1247
1248         * Makefile.in (lastrites$EXEEXT): New target; build as prerequisite...
1249         (all): ...of this primary target.
1250         (install, install-strip): Install it.
1251         (SRCDIST_FILES): Remove install-sh; it is now included in...
1252         (build-aux): ...this directory; add it to...
1253         (SRCDIST_SUBDIRS): ...this.
1254
1255 2010-08-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
1256
1257         Set default sysroots relative to mingw-get installation directory.
1258
1259         * xml/profile.xml (system-map) [name == default]: For each of...
1260         [subsystem == mingw32]: ...set sysroot path to value of %R macro...
1261         [subsystem == msys]: ...and to its %R/msys/1.0 subdirectory.
1262
1263 2010-08-19  Keith Marshall  <keithmarshall@users.sourceforge.net>
1264
1265         Some dependency resolver enhancements and bug fixes.
1266
1267         * src/pkgbase.h (pkgXmlNode::GetContainerAttribute): New method;
1268         declare it.
1269
1270         * src/pkgdeps.cpp (pkgXmlNode::GetContainerAttribute): Implement it;
1271         it is used to retrieve package name attributes from the containing
1272         'package' element, when given a pointer to a 'release' element by...
1273         (assert_unmatched, assert_installed): ...these new static functions.
1274         (pkgXmlDocument::Schedule): Use them to reconstruct and register
1275         dependency reference data for previously installed packages which are
1276         no longer included in the distribution manifest.
1277         (pkgXmlDocument::ResolveDependencies): Fix a block nesting error;
1278         catch and diagnose unresolved dependencies; don't look beyond the XML
1279         document root node, (tinyxml error not caught?), when searching for
1280         requirements specified on container nodes.
1281
1282 2010-08-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1283
1284         Improve scheduling of package processing requests.
1285
1286         * src/pkgexec.cpp (pkgXmlDocument::Schedule): Inspect entire `actions'
1287         list, when checking for duplicate package processing requests; decline
1288         to schedule any such duplicate, or any request which lacks a package
1289         association.
1290
1291 2010-08-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
1292
1293         Lay foundation for selective compilation of debugging code.
1294
1295         * src/debug.h: New file...
1296         * src/sysroot.cpp: Include it.
1297         (pkgXmlDocument::LoadSystemMap): Make debugging output conditional...
1298         [DEBUGLEVEL & DEBUG_TRACE_INIT]: ...on this new debugging state.
1299
1300 2010-08-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
1301
1302         * src/pkgkeys.h: Typo in comment: file was previously identified as
1303         pkgkeys.c; corrected.
1304
1305 2010-08-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
1306
1307         Improve diagnostics for invalid references to non-release XML nodes.
1308
1309         * src/pkgkeys.h (value_unknown): New global string; declare it.
1310         * src/pkgkeys.c (value_unknown): Implement it.
1311
1312         * src/pkgname.cpp (pkgArchiveName): Identify XML element type when
1313         diagnosing references to elements of types other than release; use...
1314         (value_unknown): ...this, as appropriate.
1315
1316 2010-08-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
1317
1318         Guard against a potential buffer overrun.
1319
1320         * src/pkgreqs.cpp (pkgSpecs::SetProperty): Allocate an additional
1321         byte to accommodate an extra field separator, when inserting a new
1322         data value into a previously empty field.
1323
1324 2010-07-27  Cesar Strauss  <cestrauss@gmail.com>
1325
1326         Handle the GNU long name tar header format.
1327
1328         * src/pkgproc.h (TAR_ENTITY_TYPE_GNU_LONGNAME): New manifest constant;
1329         define it.
1330         (pkgTarArchiveProcessor::EntityDataAsString): New protected method;
1331         declare and...
1332         * src/tarproc.cpp: ...implement it.
1333         (pkgTarArchiveProcessor::Process): Before building the entry pathname,
1334         check for a GNU long name type header; when found, read pathname from
1335         the entry data area, before fetching the following header, from which
1336         to retrieve the associated entity data.
1337
1338 2010-06-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
1339
1340         Work around an autoconf bug (reported by Stefano Sabatini).
1341
1342         * Makefile.in (VPATH): Use @top_srcdir@ instead of ${srcdir}; current
1343         autoconf incorrectly elides references to @srcdir@ and ${srcdir} when
1344         substituting within a VPATH specification for building `in-source'.
1345         Also, prefer colons to blanks as path name separators, for improved
1346         portability to non-GNU implementations of make; (recommendation by
1347         Ralf Wildenhues).
1348
1349 2010-06-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
1350
1351         Include alias search, when matching component package name.
1352
1353         * src/keyword.c (has_keyword): Rearrange argument declarations for
1354         more natural order; update all callers accordingly.  Simplify; compare
1355         keyword to be matched with each successive candidate from match-list,
1356         character-by-character and in-place, so avoiding memory allocation
1357         for any local duplicate of the passed match-list; thus...
1358         (safe_strdup): ...this static function no longer required; delete it.
1359         (string.h): No references remain; do not include it.
1360
1361         * src/pkgfind.cpp (pkgXmlNode::FindPackageByName): Augment component
1362         package name matching to include potential matches of the look-up name
1363         with trailing component name stripped off, when that matches the class
1364         name of an identified component package, and the initial substring of
1365         the look-up name, after stripping, matches any specified alias name
1366         for the containing package.
1367
1368 2010-06-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
1369
1370         Address FIXME relating to identification of distributable files.
1371
1372         * install-sh: Move to...
1373         * build-aux: ...this new directory.
1374
1375         * Makefile.in (PACKAGE_DISTVERSION): Modify `sed' edit sequence; make
1376         it depend on, and ensure that it incorporates the expansion of...
1377         (PACKAGE_SUBSYSTEM): ...this new macro; defined as substitution of...
1378         (host_os): ...this autoconf variable, set by...
1379
1380         * configure.ac (AC_CANONICAL_HOST): ...this; add it, requiring...
1381         (AC_CONFIG_AUX_DIR): ...`build-aux' directory reference, providing...
1382
1383         * build-aux/config.guess, build-aux/config.sub: ...these new standard
1384         files; import them from the standard `build-aux' repository.
1385
1386 2010-05-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1387
1388         Bump version for next release cycle.
1389
1390         * configure.ac (AC_INIT): Bump version suffix to alpha-3.
1391
1392 2010-05-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1393
1394         mingw-get-0.1-mingw32-alpha-2 released.
1395
1396         * README: Add new release notes.
1397
1398         * xml/profile.xml: Update to use default referencing for...
1399         (package-list.xml.lzma): ...this repository master catalogue.
1400
1401         * All files (r0-1-alpha-2): Tag assigned.
1402
1403 2010-05-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
1404
1405         Make provision to protect user's profile settings during upgrade.
1406
1407         * Makefile.in (install): Remove `profile.xml'; replace it with...
1408         (install-profile): ...this new prerequisite installation goal; it
1409         renames the installed copy of `profile.xml' as `defaults.xml', within
1410         the installed package image.
1411
1412         * src/pkgkeys.h (defaults_key): New key; declare it.
1413         * src/pkgkeys.c: Some cosmetic formatting (tabulation) adjustments.
1414         (defaults_key): Implement it; it refers to the `defaults.xml' file.
1415
1416         * src/climain.cpp (climain): Check `profile_key' for accessibility of
1417         the `profile.xml' file; if [! R_OK] emit a diagnostic warning, fall
1418         back on `defaults_key', and attempt to load configuration from the
1419         distributed `defaults.xml' file.
1420
1421 2010-05-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
1422
1423         Add preliminary support for future `-reinstall' option.
1424
1425         * src/pkgexec.cpp (pkgActionItem::Execute) [ACTION_INSTALL]: Force
1426         installation if `-reinstall' option is selected, overriding state of
1427         any prior installation; temporarily assume that this option is always
1428         selected, to permit proper `upgrade' operation in the absence of any
1429         functional `uninstall' capability, and pending implementation of a
1430         mechanism for interpreting user specified options.
1431
1432 2010-05-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
1433
1434         Correct handling for "%R" macro in relative sysroot path specs.
1435
1436         * src/tarproc.cpp (pkgTarArchiveProcessor): In constructor, expand the
1437         sysroot path specification a second time, to capture the effect of any
1438         embedded macros, before computing the recorded `sysroot_len' value.
1439
1440 2010-05-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
1441
1442         Handle "%" wildcard matches in package and subsystem version strings.
1443
1444         * src/pkgbase.h (pkgSpecs): Forward declare it.
1445         (pkgActionItem::~pkgActionItem): Declare explicit destructor.
1446         (pkgActionItem::SetRequirements): Add extra `pkgSpecs*' argument;
1447         update references, passing additional argument in...
1448
1449         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies): ...this.
1450
1451         * src/pkgexec.cpp (pkgActionItem::~pkgActionItem): Implement it.
1452         (pkgActionItem::SetRequirements): Delete obsolete implementation.
1453
1454         * src/pkginfo/pkginfo.h: Update copyright notice; add year 2010.
1455         (pkgSpecs::GetTarName): New public method; declare it.
1456         (pkgSpecs::SetProperty): New private method; declare it.
1457         (pkgSpecs::SetPackageName): New inline method; implement it.
1458         (pkgSpecs::SetPackageVersion, pkgSpecs::SetPackageBuild): Likewise.
1459         (pkgSpecs::SetSubSystemName, pkgSpecs::SetSubSystemVersion): Likewise.
1460         (pkgSpecs::SetSubSystemBuild, pkgSpecs::SetReleaseStatus): Likewise.
1461         (pkgSpecs::SetReleaseIndex, pkgSpecs::SetComponentClass): Likewise.
1462         (pkgSpecs::SetComponentVersion, pkgSpecs::SetPackageFormat): Likewise.
1463         (pkgSpecs::SetCompressionType): Likewise.
1464
1465         * src/pkginfo/pkginfo.l: Update copyright notice; add year 2010.
1466         (TRANS): Interpret "%" as wildcard in version string matches.
1467
1468         * src/pkgreqs.cpp: New file.
1469         (pkgActionItem::SetRequirements): Reimplement per new declaration;
1470         it now always allocates heap memory for requirements specifications.
1471         (pkgSpecs::GetTarName, pkgSpecs::SetProperty): Implement them.
1472
1473         * Makefile.in (CORE_DLL_OBJECTS): Add `pkgreqs.$(OBJEXT)'.
1474
1475 2010-04-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
1476
1477         Revert 2010-04-04 refactoring of tarproc.cpp and tarinst.cpp
1478
1479         * src/tarinst.cpp: File removed; its content merged into...
1480         * src/tarproc.cpp: ...this; it cannot be cleanly separated out.
1481
1482         * Makefile.in (tarinst.$OBJEXT): Remove reference.
1483
1484 2010-04-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
1485
1486         Handle "*" wildcard matches in package and subsystem version strings.
1487
1488         * src/vercmp.h (pkgVersionInfo::version_string): New private member
1489         variable; it stores a pointer to a dynamically allocated local copy of
1490         the invariant `version' argument, to facilitate correct parsing.
1491         (pkgVersionInfo::build_string): Likewise; it provides similar handling
1492         for the invariant `build' argument.
1493         (pkgVersionInfo::Free): New private inline method; it provides a NULL
1494         pointer safe wrapper, calling the C library `free()' function, (since
1495         some implementations are believed to be unsafe); it is used by...
1496         (pkgVersionInfo::~pkgVersionInfo): ...this new inline destructor, to
1497         release the memory allocated by the constructor, for `version_string'
1498         and `build_string'.
1499
1500         * src/vercmp.cpp (pkgVersionInfo::pkgVersionInfo): Allocate memory for
1501         `version_string' and `build_string', as required; populate it.
1502         Explicitly handle "*" as a `match anything' wildcard...
1503         (pkgVersionInfo::Compare): ...matching it as `equal' to everything.
1504
1505 2010-04-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
1506
1507         Correct omission from configure script prerequisite checks.
1508
1509         * aclocal.m4 (MINGW_AC_OUTPUT): New macro; it wraps AC_OUTPUT itself,
1510         adding a trap to force an abort if any preceding prerequisite check
1511         was handled by MINGW_AC_ASSERT_MISSING.
1512
1513         * configure.ac: Qualify package component types, in prerequisite
1514         checks handled by MINGW_AC_ASSERT_MISSING; invoke MINGW_AC_OUTPUT
1515         in place of AC_OUTPUT.
1516
1517 2010-04-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1518
1519         Add configure script checks for prerequisite library headers.
1520         (Thanks to Cesar Strauss for proposing a rudimentary implementation).
1521
1522         * aclocal.m4: New file; it does no more than include...
1523         * m4/missing.m4: ...this; new file incorporated from build-aux module.
1524
1525         * configure.ac: Add AC_CHECK_HEADER assertions for...
1526         (zlib.h, bzlib.h, lzma.h): ...these; invoke MINGW_AC_ASSERT_MISSING in
1527         respect of each failing assertion.
1528
1529 2010-04-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1530
1531         Case-insensitive subsystem name matching revisited.
1532
1533         * src/pkgfind.cpp (pkgXmlDocument::FindPackageByName): Use...
1534         (subsystem_strcmp): ...this to match subsystem names, instead of...
1535         (match_if_explicit): ...this.
1536
1537 2010-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
1538
1539         Enable recursive processing of repository package lists.
1540
1541         * src/pkgbase.h (pkgXmlDocument::SyncRepository): Make it public.
1542
1543         * src/pkgbind.cpp (pkgRepository): New locally defined and implemented
1544         class; it facilitates recursive loading and parsing of package lists,
1545         replacing much of the original non-recursive functionality within...
1546         (pkgXmlDocument::BindRepositories): ...this; use it.
1547
1548 2010-04-04  Keith Marshall  <keithmarshall@users.sourceforge.net>
1549
1550         Implement installer function; use per-package file manifests.
1551
1552         * src/pkgproc.h (pkgManifest): New class; declare it.
1553         (pkgArchiveProcessor::origin): New protected member variable.
1554         (pkgArchiveProcessor::sysroot_len): New protected member variable.
1555         (pkgArchiveProcessor::installed): Type changed to `pkgManifest *'.
1556         (pkgTarArchiveInstaller::Process): Declare specialisation hook.
1557         (pkgTarArchiveInstaller::UpdateInstallationManifest): Disused member
1558         function; remove redundant declaration from class definition.
1559         (pkgInstall): New generalised installation function; declare it.
1560         (pkgRegister): New function; declare it.
1561
1562         * src/pkginst.cpp: New file.
1563         (pkgManifest, pkgInstall, pkgRegister): Implement them.
1564
1565         * src/pkgexec.cpp (pkgActionItem::Execute): Use `pkgInstall' in place
1566         of stub formerly provided here.
1567
1568         * src/pkgkeys.h (manifest_key, reference_key): New keys; declare them.
1569         * src/pkgkeys.c (manifest_key, reference_key): Implement them.
1570
1571         * src/tarproc.cpp: Code refactored.
1572         (pkgTarArchiveProcessor::sysroot_len): Initialise it.
1573         (pkgTarArchiveProcessor::origin): Initialise it.
1574         (pkgTarArchiveProcessor::installed): Initialise; associate it with a
1575         pkgManifest class entity, and populate this as appropriate.
1576         (pkgTarArchiveProcessor::~pkgTarArchiveProcessor): Add explicit clean
1577         up of linked `pkgManifest *' entity referenced by `installed'.
1578         (pkgTarArchiveProcessor::Process) [TAR_ENTITY_TYPE_DIRECTORY]: Add
1579         braces to demarcate localised inner scope of string scan for removal
1580         of trailing directory name separators; (thanks to Cesar Strauss for
1581         reporting invalid local pointer declaration error in GCC >= 4.4).
1582         (pkgTarArchiveInstaller::UpdateInstallationManifest): Deleted.
1583         (pkgTarArchiveInstaller::pkgTarArchiveInstaller): Factor out.
1584         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
1585         (pkgTarArchiveInstaller::ProcessDataStream): Likewise.
1586         (commit_saved_entity): Likewise.
1587
1588         * src/tarinst.cpp: New file; it implements...
1589         (pkgTarArchiveInstaller::Process): ...this new specialisation
1590         of the original pkgTarArchiveProcessor::Process method...
1591         (pkgTarArchiveInstaller::pkgTarArchiveInstaller): ...and this
1592         refactored code, abstracted from src/tarproc.cpp and modified to
1593         use the pkgManifest class for installation tracking.
1594         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
1595         (pkgTarArchiveInstaller::ProcessDataStream): Likewise.
1596         (commit_saved_entity): Relocated from src/tarproc.cpp.
1597
1598         * Makefile.in (CORE_DLL_OBJECTS): Add...
1599         (pkginst.OBJEXT, tarinst.OBJEXT): ...these new object files.
1600
1601 2010-03-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
1602
1603         Guard against NULL pointer dereferences in tinyxml code.
1604
1605         * src/pkgbase.h (pkgXmlNode::GetName): Verify `this' pointer is
1606         non-NULL, before invoking the underlying tinyxml method.
1607         (pkgXmlNode::GetParent, pkgXmlNode::GetChildren): Likewise.
1608         (pkgXmlNode::GetNext, pkgXmlNode::GetPropVal): Likewise.
1609         (pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.
1610         (pkgXmlNode::GetDocumentRoot): Likewise.
1611         (pkgXmlNode::IsElementOfType): Likewise.
1612
1613 2010-03-28  Cesar Strauss  <cestrauss@gmail.com>
1614
1615         Avoid running InternetAttemptConnect in pkgInternetAgent
1616         constructor, since it is called during DLL initialisation.
1617
1618         * src/pkginet.cpp (pkgInternetAgent::pkgInternetAgent): Move the
1619         InternetAttemptConnect call from constructor...
1620         (pkgInternetAgent::OpenURL): ...to here.
1621
1622 2010-03-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
1623
1624         Automate object code dependency tracking.
1625
1626         * Makefile.in (DEPFLAGS): New macro; define it.
1627         (%.OBJEXT: %.c, %.OBJEXT: %.cpp): Add dependency generator commands...
1628         (%.d): ...to create these dependency maps; `sinclude' them, and...
1629         (clean): ...remove them.
1630         
1631         * .cvsignore (*.d): Add wild card template to match them.
1632
1633 2010-03-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
1634
1635         Support case insensitive matching for file and subsystem names.
1636
1637         * src/pkgbase.h (safe_strcmp): New inline function; it provides NULL
1638         argument safe comparison of strings, returning the boolean inverse of
1639         the `strcmp' result, using either case-sensitive or case-insensitive
1640         semantics; derive it from...
1641         (match_if_explicit): ...this; redefine as macro; invoke `safe_strcmp'
1642         using explicitly case-sensitive semantics.
1643         (subsystem_strcmp): New macro; it invokes `safe_strcmp' with either
1644         case-sensitive or case-insensitive semantics, depending on...
1645         (CASE_INSENSITIVE_SUBSYSTEMS): ...this new context selection macro; it
1646         fixes the choice between case-sensitive and case-insensitive matching
1647         semantics for any given implementation, at compile time.
1648         (pkg_strcmp): New macro; it invokes `safe_strcmp' with either
1649         case-sensitive or case-insensitive semantics, depending on...
1650         (CASE_INSENSITIVE_FILESYSTEM): ...this new context selection macro; it
1651         fixes the choice between case-sensitive and case-insensitive matching
1652         semantics for any given implementation, at compile time.
1653
1654         * src/sysroot.cpp (pkgXmlNode::GetSysRoot): Use `subsystem_strcmp'.
1655
1656 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
1657
1658         Add preliminary support for virtual packages.
1659
1660         * src/pkgkeys.h (yes_value, no_value): Redefine as aliases...
1661         (value_yes, value_no): ...for these new global strings; declare them.
1662         (value_none, value_virtual): New global strings; declare them.
1663
1664         * src/pkgkeys.c (yes_value, no_value): Rename...
1665         (value_yes, value_no): ...to implement these, respectively.
1666         (value_none, value_virtual): Implement them.
1667
1668         * src/pkgname.cpp (pkgXmlNode::ArchiveName): Check containing package
1669         node for `class' attribute set to `value_virtual'; if present, always
1670         return the effective `tarname' property as `value_none'.
1671
1672         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): For packages
1673         with an effective `tarname' of `value_none', do not download anything.
1674
1675         * src/pkgexec.cpp (pkgActionItem::Execute): For packages with an
1676         effective `tarname' of `value_none', do not invoke any tar archive
1677         processing function.
1678
1679 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
1680
1681         Don't write installation records for unavailable packages.
1682
1683         * src/tarproc.cpp (pkgTarArchiveInstaller): In constructor, ensure
1684         archive is ready for processing, before initialising an installation
1685         manifest record.
1686
1687 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
1688
1689         Rationalise path identification for XML file locations.
1690
1691         * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Use `xmlfile()'
1692         function to locate `sysroot' map file; free memory when done.
1693         (pkgXmlDocument::UpdateSystemMap): Likewise.
1694         (sigpath): Static global variable disused; delete it.
1695
1696 2010-03-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
1697
1698         Extend package name search to include component packages.
1699
1700         * src/pkgfind.cpp (pkgHasMatchingName): Remove; fold it into...
1701         (pkgXmlNode::FindPackageByName): ...this; augment to extend search
1702         within package definition elements, seeking a potential match on an
1703         included component package name or component class-implied name.
1704
1705         * src/pkgkeys.h (class_key): New global string constant; declare it.
1706         * src/pkgkeys.c (class_key): Implement it.
1707
1708 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
1709
1710         Bump version for next release cycle.
1711
1712         * configure.ac (AC_INIT): Bump version suffix to alpha-2.
1713
1714 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
1715
1716         mingw-get-0.1-mingw32-alpha-1 released.
1717
1718 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
1719
1720         Prepare initial package release.
1721
1722         * README: New file; use it to source release notes.
1723
1724         * Makefile.in (SRCDIST_FILES): Use ...
1725         (LICENCE_FILES): ...this new macro; define it.
1726         (licdist): New build goal; implement it.
1727         (bindist): Require it; add alternative `zip' format package.
1728
1729         * xml/profile.xml (repository): Set default `package-index' name.
1730         (system-map): Normalise spelling for default `sysroot' path names.
1731
1732 2010-02-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
1733
1734         Add directory/file records in installation manifests.
1735
1736         * src/pkgkeys.h (dirname_key, filename_key): New strings; declare...
1737         * src/pkgkeys.c (dirname_key, filename_key): ...and implement them.
1738
1739         * src/pkgproc.h (pkgArchiveProcessor::installed): New class member
1740         variable; declare it.
1741         (pkgTarArchiveInstaller::UpdateInstallationManifest): New method;
1742         declare it.
1743
1744         * src/tarproc.cpp: Miscellaneous comment updates.
1745         (pkgTarArchiveInstaller): In constructor...
1746         (pkgTarArchiveInstaller::installed): ...use new member variable...
1747         (pkgArchiveProcessor::installed): ...inherited from this.
1748         (pkgTarArchiveInstaller::UpdateInstallationManifest): Implement and...
1749         (pkgTarArchiveInstaller::ProcessDataStream): ...use it.
1750         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
1751
1752 2010-02-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
1753
1754         Work around a deficiency in Microsoft's stat() implementation.
1755
1756         * src/tarproc.cpp (pkgTarArchiveProcessor::ProcessDirectory): Don't
1757         pass a `pathname' argument with trailing slashes; strip them off.
1758
1759 2010-02-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
1760
1761         Add machinery for installation and packaging for distribution.
1762
1763         * install-sh: New file; source it from autoconf distribution.
1764
1765         * configure.ac (AC_PREFIX_DEFAULT): Assign it as `C:/MinGW'.
1766         (AC_PROG_MKDIR_P, AC_PROG_INSTALL, AC_PROG_LN_S): Invoke these.
1767         (STRIP): New output variable; use AC_CHECK_TOOL to define it.
1768
1769         * Makefile.in (abs_top_srcdir): Define to AC_SUBST value.
1770         (PACKAGE_TARNAME, PACKAGE_VERSION): Define to AC_SUBST values.
1771         (prefix, exec_prefix, bindir, libexecdir, localstatedir): Likewise.
1772         (INSTALL, INSTALL_PROGRAM, INSTALL_SCRIPT, INSTALL_DATA): Likewise.
1773         (STRIP): New macro; define it using AC_CHECK_TOOL substitution.
1774         (mkinstalldirs): New macro; define it as AC_PROG_MKDIR_P result.
1775         (LN_S): New macro; define it as AC_PROG_LN_S result.
1776         (dist, srcdist, bindist): New build objectives; implement them.
1777         (install, installdirs, install-strip, maintainer-clean): Likewise.
1778         (SRCDIST_FILES, SRCDIST_SUBDIRS): New macros; define them.
1779         (PACKAGE_DISTNAME, PACKAGE_DISTVERSION): Likewise.
1780         (PACKAGE_DISTROOT, PACKAGE_ROOTVERSION): Likewise.
1781         (PACKAGE_CONFIG_DIR): Likewise.
1782
1783 2010-02-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
1784
1785         Implement package installer for tar archives.
1786
1787         * src/pkgexec.cpp (pkgXmlDocument::Execute): Replace existing
1788         stub implementation of installer, using methods provided by...
1789         * src/pkgproc.h, src/tarproc.cpp: ...these new files, with trap...
1790         * src/pkgdeps.cpp (pkgXmlDocument::Schedule) [installed]: Add entry...
1791         (pkgActionItem::Selection) [to_remove]: ...for this; use it to detect
1792         `install' requests for packages which are aleady installed.
1793
1794         * Makefile.in (CORE_DLL_OBJECTS): Add tarproc.$(OBJEXT); specify
1795         dependencies as appropriate.
1796
1797         * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Don't commit
1798         newly created `sysroot' mapping records to disk; defer to...
1799         (pkgXmlDocument::UpdateSystemMap): ...this new method.
1800         (sigpath): Make it a global variable, with file (static) scope.
1801
1802         * src/climain.cpp (pkgXmlDocument::UpdateSystemMap): Invoke it.
1803
1804         * src/pkgkeys.h (download_key, modified_key, source_key): New global
1805         string variables; declare them, providing their implementations...
1806         * src/pkgkeys.c (download_key, modified_key, source_key): ...here.
1807         * src/pkgname.cpp (download_key, source_key): Use them.
1808
1809         * src/pkginet.cpp (pkgActionItem::ArchivePath): Delete; replace...
1810         * src/mkpath.c (pkgArchivePath): ...with this free standing function.
1811         * src/mkpath.h (pkgArchivePath): Declare its prototype.
1812
1813         * src/pkgbase.h (pkgActionItem::ArchivePath): Delete declaration.
1814         (pkgXmlDocument): Add a default constructor; implement as `inline'.
1815         (pkgXmlDocument::AddDeclaration): Use heap memory to allocate the new
1816         declaration object, instead of `auto' variable, to avoid scope error.
1817         (pkgXmlDocument::UpdateSystemMap): Declare it.
1818
1819 2010-01-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
1820
1821         Implement rudimentary dependency resolver.
1822
1823         * src/pkgdeps.cpp: New file.
1824
1825         * Makefile.in (CORE_DLL_OBJECTS): Add pkgdeps.$(OBJEXT) reference;
1826         establish header file dependencies.
1827
1828         * src/pkgbase.h (to_remove, to_install, selection_types): New enum.
1829         (pkgActionItem::selection): Extend it to store as enumerated pair...
1830         (pkgActionItem::SelectPackage): New inline method; assign them.
1831         (pkgActionItem::Selection): New inline method; retrieve them.
1832         (pkgXmlNode::GetInstallationRecord): New method; declare it.
1833
1834         * src/pkgexec.cpp (pkgActionItem): In constructor...
1835         (selection): ...initialise both references in enumerated pair.
1836         (pkgActionItem::GetReference): Use `Selection()' method.
1837         (pkgActionItem::SelectIfMostRecent): Ditto; also correct logic for
1838         making selection, and assign to `to_install' element.
1839         (pkgXmlDocument::Schedule): Don't update `request'.
1840         (pkgActionItem::Execute): Implement as stub.
1841
1842         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): Use new
1843         `Selection()' method.
1844
1845         * src/pkgkeys.h (yes_value, no_value): Declare new string constants.
1846         * src/pkgkeys.c (yes_value, no_value): Implement them.
1847
1848         * src/vercmp.cpp: Update copyright notice.
1849         (pkgVersionInfo::operator<=): Bug fix; must test for `<', but had `>'.
1850
1851 2010-01-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
1852
1853         Avoid segmentation faults when processing invalid data streams.
1854
1855         * src/pkgstrm.h: Update copyright notice.
1856         (pkgArchiveStream::IsReady): New pure virtual method.
1857         (pkgRawArchiveStream::IsReady): Provide inline implementation.
1858         (pkgGzipArchiveStream::IsReady): Likewise.
1859         (pkgBzipArchiveStream::IsReady): Likewise.
1860         (pkgLzmaArchiveStream::IsReady): Likewise.
1861         (pkgXzArchiveStream::IsReady): Likewise.
1862
1863         * src/pkgstrm.cpp: Update copyright notice.
1864         (pkgLzmaArchiveStream, pkgXzArchiveStream) [fd == -1]: Decline to
1865         perform any form of read or decode processing.
1866
1867         * src/pkginet.cpp (pkgInternetLzmaStreamingAgent): Use `fd = -2' as
1868         pseudo-descriptor for the pkgLzmaArchiveStream derived component of
1869         this internet data streaming class.
1870
1871 2010-01-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
1872
1873         Require liblzma >= liblzma-4.999.9beta_20091209-3-mingw32-dev
1874
1875         * src/pkgstrm.h (LZMA_API_STATIC): Remove definition and associated
1876         comment; it was required to permit, (but not to enforce), linking to
1877         the static liblzma.a library, with earlier beta releases, but this
1878         anomaly has now been corrected.
1879
1880 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
1881
1882         Remove zlib sources from trunk.
1883         (Application builders should use free standing implementation of
1884          zlib, from MinGW's package distribution page on SourceForge).
1885
1886 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
1887
1888         Remove bzip2 sources from trunk.
1889         (Application builders should use free standing implementation of
1890          bzip2, from MinGW's package distribution page on SourceForge).
1891
1892 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
1893
1894         Add subsystem specific sysroot mapping facility.
1895
1896         * src/pkghash.c: New file; required by...
1897         * src/sysroot.cpp: New file; it implements...
1898         (pkgXmlDocument::LoadSystemMap, pkgXmlNode::GetSysRoot): New methods.
1899
1900         * src/pkgbase.h: Update copyright notice.
1901         (pkgXmlDocument::LoadSystemMap): Declare it.
1902         (pkgXmlDocument::AddDeclaration): New inline method.
1903         (pkgXmlDocument::SetRoot, pkgXmlDocument::Save): Likewise.
1904         (pkgXmlNode::GetSysRoot): Declare it.
1905         (pkgXmlNode::GetDocumentRoot): New inline method.
1906         (pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.
1907
1908         * src/climain.cpp: Update copyright notice.
1909         (climain): Invoke pkgXmlDocument::LoadSystemMap() as required.
1910
1911         * Makefile.in (CORE_DLL_OBJECTS): Add ...
1912         (pkghash.$(OBJEXT), sysroot.$(OBJEXT)): ...these; upate dependencies.
1913         (DEBUGLEVEL): New macro; define it.
1914         (CPPFLAGS): Use it.
1915
1916 2010-01-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
1917
1918         Assign standardised keys for XML database lookup.
1919
1920         * src/pkgkeys.h: New file; provide public key declarations.
1921         * src/pkgkeys.c: New file; implement them.
1922
1923         * src/pkgbind.cpp: Use them; update copyright notice.
1924         * src/pkgexec.cpp, src/pkgfind.cpp, src/pkginet.cpp: Likewise.
1925         * src/pkgname.cpp, src/pkgspec.cpp: Likewise.
1926
1927         * Makfile.in (CORE_DLL_OBJECTS): Add pkgkeys.$(OBJEXT); update all
1928         dependencies accordingly.
1929
1930 2010-01-08  Keith Marshall  <keithmarshall@users.sourceforge.net>
1931
1932         Add CLI version reporting option.
1933
1934         * configure.ac: Update copyright notice for new year.
1935         (COPYRIGHT_HOLDER): New AC_SUBST variable; define it.
1936         (YEARS_OF_ISSUE): New AC_SUBST variable; define it.
1937         (AC_CONFIG_FILES): Add `version.c'; source it from...
1938
1939         * version.c.in: ...this new file.
1940
1941         * Makefile.in: Update copyright notice for new year.
1942         (mingw-get$(EXEEXT)): Add dependency on `version.$(OBJEXT)'.
1943         (distclean): Add `version.c'.
1944
1945         * configure: Regenerated.
1946
1947         * src/clistub.c: Update copyright notice for new year.
1948         (options): New array of `struct option'; define and use it as the
1949         reference for `argv' parsing with `getopt_long_only()'.
1950
1951 2009-12-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1952
1953         Add CLI support for "update" action.
1954
1955         * src/pkgtask.h (ACTION_UPDATE): Define it, derived from...
1956         (action_update): ...this new entry in anonymous enumeration.
1957         
1958         * src/pkgexec.cpp (action_name): Add "update" keyword identification.
1959
1960         * src/pkgbase.h: Typo in comment; s/xwXmlDocument/wxXmlDocument/.
1961         (pkgXmlDocument::BindRepositories): Add `force_update' parameter...
1962         * src/pkgbind.cpp (pkgXmlDocument::BindRepositories): Use it to...
1963         (pkgXmlDocument::SyncRepository): ...invoke this method when passed as
1964         a `true' flag, in addition to (as previously) first time reference.
1965
1966         * src/climain.cpp (climain): Interpret "update" keyword for...
1967         [ACTION_UPDATE]: ...passing state as `force_update' parameter to...
1968         (pkgXmlDocument::BindRepositories): ...this method, then...
1969         [!ACTION_UPDATE]: Follow with normal action processing.
1970
1971 2009-12-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
1972
1973         Add status checking for Internet URL connections.
1974
1975         * src/pkginet.cpp (pkgInternetAgent::QueryStatus): New method.
1976         (pkgInternetStreamingAgent::Get): Use it; set `dl_status' as return
1977         value, deferring failure diagnostics to callers, i.e. to...
1978         (pkgXmlDocument::SyncRepositories): ...this, and to...
1979         (pkgActionItem::DownloadArchiveFiles): ...this.
1980
1981 2009-11-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
1982
1983         Add package download and repository synchronisation machinery.
1984
1985         * src/pkgstrm.h: New header file.
1986
1987         * src/pkgbind.cpp, src/pkginet.cpp, src/pkgstrm.cpp,
1988         src/pkgfind.cpp, src/pkgname.cpp, src/keyword.c: New files.
1989         * Makefile.in (CORE_DLL_OBJECTS): Add build goals for them.
1990
1991         * xml: New directory.
1992
1993         * src/climain.cpp (climain): Establish repository bindings from...
1994         * xml/profile.xml: ...this new configuration file.
1995
1996 2009-11-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
1997
1998         Add XML database bindings and preliminary action executive for CLI.
1999
2000         * src/pkgbase.h, src/pkgtask.h,
2001         src/mkpath.h, src/vercmp.h: New header files.
2002
2003         * src/climain.cpp, src/pkgexec.cpp, src/pkgspec.cpp,
2004         src/mkpath.c, src/vercmp.cpp, src/xmlfile.c: New files.
2005
2006         * Makefile.in (CORE_DLL_OBJECTS): Define initial set of files...
2007         (mingw-get-0.dll): ...build them into this new DLL target; add it...
2008         (all): ...as prerequisite for this primary build goal.
2009
2010 2009-11-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
2011
2012         Avoid some potential GCC warnings.
2013
2014         * src/clistub.c: Include process.h for `execv' prototype...
2015         (main): Cast `argv' to appropriately matched type when calling it.
2016
2017         * src/pkginfo/driver.c: Include stdlib.h for `free' prototype.
2018
2019 2009-11-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
2020
2021         Create diagnostic message handler for CLI usage.
2022
2023         * src/dmh.h: New header file; it defines the public interface.
2024         * src/dmh.cpp: New file; it implements the message handler.
2025
2026 2009-11-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
2027
2028         Correct some identified TinyXML issues.
2029
2030         * tinyxml/tinyxml.h (IsWhiteSpace): Add FIXME annotation to flag
2031         probable redundancy of checks for '\n' and '\r'.
2032         * tinyxml/tinyxmlparser.cpp: Revert John E's 2008-08-09 change; remove
2033         all such redundancies in IsWhiteSpace() calls throughout.
2034
2035         * tinyxml/tinyxml.cpp (TiXmlAttribute::SetDoubleValue): Correct format
2036         specification in sprintf()/snprintf() calls; "%lf" is invalid; replace
2037         with "%f".
2038
2039 2009-10-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
2040
2041         Add CLI loader stub.
2042
2043         * src/clistub.c: New file.
2044         * Makefile.in: Add build rule for it; build as...
2045         (mingw-get.exe): ...this; also add to...
2046         (clean): ...this goal.
2047
2048 2009-10-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
2049
2050         Set up build mechanism.
2051
2052         * configure.ac, Makefile.in: New files.
2053         * .cvsignore (configure, autom4te.cache): Add to ignored files.
2054
2055 2009-10-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
2056
2057         Add GPL-v3 licensing terms.
2058
2059         * COPYING: New file, sourced from gnu.org.
2060
2061 2009-10-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
2062
2063         Add pkginfo implementation.
2064
2065         * src, src/pkginfo: New directories.
2066         * src/pkginfo/pkginfo.h, src/pkginfo/pkginfo.l: New files.
2067         * src/pkginfo/driver.c: New file.
2068
2069 2009-10-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
2070
2071         Create tdm-branch.
2072
2073         * All files (tdm-branch): Assign new branch tag.
2074         * All top-level files: Remove from trunk.
2075         * ChangeLog: New file.