OSDN Git Service

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