OSDN Git Service

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