OSDN Git Service

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