OSDN Git Service

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