OSDN Git Service

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