OSDN Git Service

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