OSDN Git Service

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