OSDN Git Service

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