OSDN Git Service

Revert 2010-04-04 refactoring of tarproc.cpp and tarinst.cpp
[mingw/mingw-get.git] / ChangeLog
1 2010-04-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
2
3         Revert 2010-04-04 refactoring of tarproc.cpp and tarinst.cpp
4
5         * src/tarinst.cpp: File removed; its content merged into...
6         * src/tarproc.cpp: ...this; it cannot be cleanly separated out.
7
8         * Makefile.in (tarinst.$OBJEXT): Remove reference.
9
10 2010-04-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
11
12         Handle "*" wildcard matches in package and subsystem version strings.
13
14         * src/vercmp.h (pkgVersionInfo::version_string): New private member
15         variable; it stores a pointer to a dynamically allocated local copy of
16         the invariant `version' argument, to facilitate correct parsing.
17         (pkgVersionInfo::build_string): Likewise; it provides similar handling
18         for the invariant `build' argument.
19         (pkgVersionInfo::Free): New private inline method; it provides a NULL
20         pointer safe wrapper, calling the C library `free()' function, (since
21         some implementations are believed to be unsafe); it is used by...
22         (pkgVersionInfo::~pkgVersionInfo): ...this new inline destructor, to
23         release the memory allocated by the constructor, for `version_string'
24         and `build_string'.
25
26         * src/vercmp.cpp (pkgVersionInfo::pkgVersionInfo): Allocate memory for
27         `version_string' and `build_string', as required; populate it.
28         Explicitly handle "*" as a `match anything' wildcard...
29         (pkgVersionInfo::Compare): ...matching it as `equal' to everything.
30
31 2010-04-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
32
33         Correct omission from configure script prerequisite checks.
34
35         * aclocal.m4 (MINGW_AC_OUTPUT): New macro; it wraps AC_OUTPUT itself,
36         adding a trap to force an abort if any preceding prerequisite check
37         was handled by MINGW_AC_ASSERT_MISSING.
38
39         * configure.ac: Qualify package component types, in prerequisite
40         checks handled by MINGW_AC_ASSERT_MISSING; invoke MINGW_AC_OUTPUT
41         in place of AC_OUTPUT.
42
43 2010-04-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
44
45         Add configure script checks for prerequisite library headers.
46         (Thanks to Cesar Strauss for proposing a rudimentary implementation).
47
48         * aclocal.m4: New file; it does no more than include...
49         * m4/missing.m4: ...this; new file incorporated from build-aux module.
50
51         * configure.ac: Add AC_CHECK_HEADER assertions for...
52         (zlib.h, bzlib.h, lzma.h): ...these; invoke MINGW_AC_ASSERT_MISSING in
53         respect of each failing assertion.
54
55 2010-04-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
56
57         Case-insensitive subsystem name matching revisited.
58
59         * src/pkgfind.cpp (pkgXmlDocument::FindPackageByName): Use...
60         (subsystem_strcmp): ...this to match subsystem names, instead of...
61         (match_if_explicit): ...this.
62
63 2010-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
64
65         Enable recursive processing of repository package lists.
66
67         * src/pkgbase.h (pkgXmlDocument::SyncRepository): Make it public.
68
69         * src/pkgbind.cpp (pkgRepository): New locally defined and implemented
70         class; it facilitates recursive loading and parsing of package lists,
71         replacing much of the original non-recursive functionality within...
72         (pkgXmlDocument::BindRepositories): ...this; use it.
73
74 2010-04-04  Keith Marshall  <keithmarshall@users.sourceforge.net>
75
76         Implement installer function; use per-package file manifests.
77
78         * src/pkgproc.h (pkgManifest): New class; declare it.
79         (pkgArchiveProcessor::origin): New protected member variable.
80         (pkgArchiveProcessor::sysroot_len): New protected member variable.
81         (pkgArchiveProcessor::installed): Type changed to `pkgManifest *'.
82         (pkgTarArchiveInstaller::Process): Declare specialisation hook.
83         (pkgTarArchiveInstaller::UpdateInstallationManifest): Disused member
84         function; remove redundant declaration from class definition.
85         (pkgInstall): New generalised installation function; declare it.
86         (pkgRegister): New function; declare it.
87
88         * src/pkginst.cpp: New file.
89         (pkgManifest, pkgInstall, pkgRegister): Implement them.
90
91         * src/pkgexec.cpp (pkgActionItem::Execute): Use `pkgInstall' in place
92         of stub formerly provided here.
93
94         * src/pkgkeys.h (manifest_key, reference_key): New keys; declare them.
95         * src/pkgkeys.c (manifest_key, reference_key): Implement them.
96
97         * src/tarproc.cpp: Code refactored.
98         (pkgTarArchiveProcessor::sysroot_len): Initialise it.
99         (pkgTarArchiveProcessor::origin): Initialise it.
100         (pkgTarArchiveProcessor::installed): Initialise; associate it with a
101         pkgManifest class entity, and populate this as appropriate.
102         (pkgTarArchiveProcessor::~pkgTarArchiveProcessor): Add explicit clean
103         up of linked `pkgManifest *' entity referenced by `installed'.
104         (pkgTarArchiveProcessor::Process) [TAR_ENTITY_TYPE_DIRECTORY]: Add
105         braces to demarcate localised inner scope of string scan for removal
106         of trailing directory name separators; (thanks to Cesar Strauss for
107         reporting invalid local pointer declaration error in GCC >= 4.4).
108         (pkgTarArchiveInstaller::UpdateInstallationManifest): Deleted.
109         (pkgTarArchiveInstaller::pkgTarArchiveInstaller): Factor out.
110         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
111         (pkgTarArchiveInstaller::ProcessDataStream): Likewise.
112         (commit_saved_entity): Likewise.
113
114         * src/tarinst.cpp: New file; it implements...
115         (pkgTarArchiveInstaller::Process): ...this new specialisation
116         of the original pkgTarArchiveProcessor::Process method...
117         (pkgTarArchiveInstaller::pkgTarArchiveInstaller): ...and this
118         refactored code, abstracted from src/tarproc.cpp and modified to
119         use the pkgManifest class for installation tracking.
120         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
121         (pkgTarArchiveInstaller::ProcessDataStream): Likewise.
122         (commit_saved_entity): Relocated from src/tarproc.cpp.
123
124         * Makefile.in (CORE_DLL_OBJECTS): Add...
125         (pkginst.OBJEXT, tarinst.OBJEXT): ...these new object files.
126
127 2010-03-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
128
129         Guard against NULL pointer dereferences in tinyxml code.
130
131         * src/pkgbase.h (pkgXmlNode::GetName): Verify `this' pointer is
132         non-NULL, before invoking the underlying tinyxml method.
133         (pkgXmlNode::GetParent, pkgXmlNode::GetChildren): Likewise.
134         (pkgXmlNode::GetNext, pkgXmlNode::GetPropVal): Likewise.
135         (pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.
136         (pkgXmlNode::GetDocumentRoot): Likewise.
137         (pkgXmlNode::IsElementOfType): Likewise.
138
139 2010-03-28  Cesar Strauss  <cestrauss@gmail.com>
140
141         Avoid running InternetAttemptConnect in pkgInternetAgent
142         constructor, since it is called during DLL initialisation.
143
144         * src/pkginet.cpp (pkgInternetAgent::pkgInternetAgent): Move the
145         InternetAttemptConnect call from constructor...
146         (pkgInternetAgent::OpenURL): ...to here.
147
148 2010-03-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
149
150         Automate object code dependency tracking.
151
152         * Makefile.in (DEPFLAGS): New macro; define it.
153         (%.OBJEXT: %.c, %.OBJEXT: %.cpp): Add dependency generator commands...
154         (%.d): ...to create these dependency maps; `sinclude' them, and...
155         (clean): ...remove them.
156         
157         * .cvsignore (*.d): Add wild card template to match them.
158
159 2010-03-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
160
161         Support case insensitive matching for file and subsystem names.
162
163         * src/pkgbase.h (safe_strcmp): New inline function; it provides NULL
164         argument safe comparison of strings, returning the boolean inverse of
165         the `strcmp' result, using either case-sensitive or case-insensitive
166         semantics; derive it from...
167         (match_if_explicit): ...this; redefine as macro; invoke `safe_strcmp'
168         using explicitly case-sensitive semantics.
169         (subsystem_strcmp): New macro; it invokes `safe_strcmp' with either
170         case-sensitive or case-insensitive semantics, depending on...
171         (CASE_INSENSITIVE_SUBSYSTEMS): ...this new context selection macro; it
172         fixes the choice between case-sensitive and case-insensitive matching
173         semantics for any given implementation, at compile time.
174         (pkg_strcmp): New macro; it invokes `safe_strcmp' with either
175         case-sensitive or case-insensitive semantics, depending on...
176         (CASE_INSENSITIVE_FILESYSTEM): ...this new context selection macro; it
177         fixes the choice between case-sensitive and case-insensitive matching
178         semantics for any given implementation, at compile time.
179
180         * src/sysroot.cpp (pkgXmlNode::GetSysRoot): Use `subsystem_strcmp'.
181
182 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
183
184         Add preliminary support for virtual packages.
185
186         * src/pkgkeys.h (yes_value, no_value): Redefine as aliases...
187         (value_yes, value_no): ...for these new global strings; declare them.
188         (value_none, value_virtual): New global strings; declare them.
189
190         * src/pkgkeys.c (yes_value, no_value): Rename...
191         (value_yes, value_no): ...to implement these, respectively.
192         (value_none, value_virtual): Implement them.
193
194         * src/pkgname.cpp (pkgXmlNode::ArchiveName): Check containing package
195         node for `class' attribute set to `value_virtual'; if present, always
196         return the effective `tarname' property as `value_none'.
197
198         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): For packages
199         with an effective `tarname' of `value_none', do not download anything.
200
201         * src/pkgexec.cpp (pkgActionItem::Execute): For packages with an
202         effective `tarname' of `value_none', do not invoke any tar archive
203         processing function.
204
205 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
206
207         Don't write installation records for unavailable packages.
208
209         * src/tarproc.cpp (pkgTarArchiveInstaller): In constructor, ensure
210         archive is ready for processing, before initialising an installation
211         manifest record.
212
213 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
214
215         Rationalise path identification for XML file locations.
216
217         * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Use `xmlfile()'
218         function to locate `sysroot' map file; free memory when done.
219         (pkgXmlDocument::UpdateSystemMap): Likewise.
220         (sigpath): Static global variable disused; delete it.
221
222 2010-03-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
223
224         Extend package name search to include component packages.
225
226         * src/pkgfind.cpp (pkgHasMatchingName): Remove; fold it into...
227         (pkgXmlNode::FindPackageByName): ...this; augment to extend search
228         within package definition elements, seeking a potential match on an
229         included component package name or component class-implied name.
230
231         * src/pkgkeys.h (class_key): New global string constant; declare it.
232         * src/pkgkeys.c (class_key): Implement it.
233
234 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
235
236         Bump version for next release cycle.
237
238         * configure.ac (AC_INIT): Bump version suffix to alpha-2.
239
240 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
241
242         mingw-get-0.1-mingw32-alpha-1 released.
243
244 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
245
246         Prepare initial package release.
247
248         * README: New file; use it to source release notes.
249
250         * Makefile.in (SRCDIST_FILES): Use ...
251         (LICENCE_FILES): ...this new macro; define it.
252         (licdist): New build goal; implement it.
253         (bindist): Require it; add alternative `zip' format package.
254
255         * src/profile (repository): Set default `package-index' name.
256         (system-map): Normalise spelling for default `sysroot' path names.
257
258 2010-02-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
259
260         Add directory/file records in installation manifests.
261
262         * src/pkgkeys.h (dirname_key, filename_key): New strings; declare...
263         * src/pkgkeys.c (dirname_key, filename_key): ...and implement them.
264
265         * src/pkgproc.h (pkgArchiveProcessor::installed): New class member
266         variable; declare it.
267         (pkgTarArchiveInstaller::UpdateInstallationManifest): New method;
268         declare it.
269
270         * src/tarproc.cpp: Miscellaneous comment updates.
271         (pkgTarArchiveInstaller): In constructor...
272         (pkgTarArchiveInstaller::installed): ...use new member variable...
273         (pkgArchiveProcessor::installed): ...inherited from this.
274         (pkgTarArchiveInstaller::UpdateInstallationManifest): Implement and...
275         (pkgTarArchiveInstaller::ProcessDataStream): ...use it.
276         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
277
278 2010-02-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
279
280         Work around a deficiency in Microsoft's stat() implementation.
281
282         * src/tarproc.cpp (pkgTarArchiveProcessor::ProcessDirectory): Don't
283         pass a `pathname' argument with trailing slashes; strip them off.
284
285 2010-02-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
286
287         Add machinery for installation and packaging for distribution.
288
289         * install-sh: New file; source it from autoconf distribution.
290
291         * configure.ac (AC_PREFIX_DEFAULT): Assign it as `C:/MinGW'.
292         (AC_PROG_MKDIR_P, AC_PROG_INSTALL, AC_PROG_LN_S): Invoke these.
293         (STRIP): New output variable; use AC_CHECK_TOOL to define it.
294
295         * Makefile.in (abs_top_srcdir): Define to AC_SUBST value.
296         (PACKAGE_TARNAME, PACKAGE_VERSION): Define to AC_SUBST values.
297         (prefix, exec_prefix, bindir, libexecdir, localstatedir): Likewise.
298         (INSTALL, INSTALL_PROGRAM, INSTALL_SCRIPT, INSTALL_DATA): Likewise.
299         (STRIP): New macro; define it using AC_CHECK_TOOL substitution.
300         (mkinstalldirs): New macro; define it as AC_PROG_MKDIR_P result.
301         (LN_S): New macro; define it as AC_PROG_LN_S result.
302         (dist, srcdist, bindist): New build objectives; implement them.
303         (install, installdirs, install-strip, maintainer-clean): Likewise.
304         (SRCDIST_FILES, SRCDIST_SUBDIRS): New macros; define them.
305         (PACKAGE_DISTNAME, PACKAGE_DISTVERSION): Likewise.
306         (PACKAGE_DISTROOT, PACKAGE_ROOTVERSION): Likewise.
307         (PACKAGE_CONFIG_DIR): Likewise.
308
309 2010-02-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
310
311         Implement package installer for tar archives.
312
313         * src/pkgexec.cpp (pkgXmlDocument::Execute): Replace existing
314         stub implementation of installer, using methods provided by...
315         * src/pkgproc.h, src/tarproc.cpp: ...these new files, with trap...
316         * src/pkgdeps.cpp (pkgXmlDocument::Schedule) [installed]: Add entry...
317         (pkgActionItem::Selection) [to_remove]: ...for this; use it to detect
318         `install' requests for packages which are aleady installed.
319
320         * Makefile.in (CORE_DLL_OBJECTS): Add tarproc.$(OBJEXT); specify
321         dependencies as appropriate.
322
323         * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Don't commit
324         newly created `sysroot' mapping records to disk; defer to...
325         (pkgXmlDocument::UpdateSystemMap): ...this new method.
326         (sigpath): Make it a global variable, with file (static) scope.
327
328         * src/climain.cpp (pkgXmlDocument::UpdateSystemMap): Invoke it.
329
330         * src/pkgkeys.h (download_key, modified_key, source_key): New global
331         string variables; declare them, providing their implementations...
332         * src/pkgkeys.c (download_key, modified_key, source_key): ...here.
333         * src/pkgname.cpp (download_key, source_key): Use them.
334
335         * src/pkginet.cpp (pkgActionItem::ArchivePath): Delete; replace...
336         * src/mkpath.c (pkgArchivePath): ...with this free standing function.
337         * src/mkpath.h (pkgArchivePath): Declare its prototype.
338
339         * src/pkgbase.h (pkgActionItem::ArchivePath): Delete declaration.
340         (pkgXmlDocument): Add a default constructor; implement as `inline'.
341         (pkgXmlDocument::AddDeclaration): Use heap memory to allocate the new
342         declaration object, instead of `auto' variable, to avoid scope error.
343         (pkgXmlDocument::UpdateSystemMap): Declare it.
344
345 2010-01-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
346
347         Implement rudimentary dependency resolver.
348
349         * src/pkgdeps.cpp: New file.
350
351         * Makefile.in (CORE_DLL_OBJECTS): Add pkgdeps.$(OBJEXT) reference;
352         establish header file dependencies.
353
354         * src/pkgbase.h (to_remove, to_install, selection_types): New enum.
355         (pkgActionItem::selection): Extend it to store as enumerated pair...
356         (pkgActionItem::SelectPackage): New inline method; assign them.
357         (pkgActionItem::Selection): New inline method; retrieve them.
358         (pkgXmlNode::GetInstallationRecord): New method; declare it.
359
360         * src/pkgexec.cpp (pkgActionItem): In constructor...
361         (selection): ...initialise both references in enumerated pair.
362         (pkgActionItem::GetReference): Use `Selection()' method.
363         (pkgActionItem::SelectIfMostRecent): Ditto; also correct logic for
364         making selection, and assign to `to_install' element.
365         (pkgXmlDocument::Schedule): Don't update `request'.
366         (pkgActionItem::Execute): Implement as stub.
367
368         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): Use new
369         `Selection()' method.
370
371         * src/pkgkeys.h (yes_value, no_value): Declare new string constants.
372         * src/pkgkeys.c (yes_value, no_value): Implement them.
373
374         * src/vercmp.cpp: Update copyright notice.
375         (pkgVersionInfo::operator<=): Bug fix; must test for `<', but had `>'.
376
377 2010-01-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
378
379         Avoid segmentation faults when processing invalid data streams.
380
381         * src/pkgstrm.h: Update copyright notice.
382         (pkgArchiveStream::IsReady): New pure virtual method.
383         (pkgRawArchiveStream::IsReady): Provide inline implementation.
384         (pkgGzipArchiveStream::IsReady): Likewise.
385         (pkgBzipArchiveStream::IsReady): Likewise.
386         (pkgLzmaArchiveStream::IsReady): Likewise.
387         (pkgXzArchiveStream::IsReady): Likewise.
388
389         * src/pkgstrm.cpp: Update copyright notice.
390         (pkgLzmaArchiveStream, pkgXzArchiveStream) [fd == -1]: Decline to
391         perform any form of read or decode processing.
392
393         * src/pkginet.cpp (pkgInternetLzmaStreamingAgent): Use `fd = -2' as
394         pseudo-descriptor for the pkgLzmaArchiveStream derived component of
395         this internet data streaming class.
396
397 2010-01-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
398
399         Require liblzma >= liblzma-4.999.9beta_20091209-3-mingw32-dev
400
401         * src/pkgstrm.h (LZMA_API_STATIC): Remove definition and associated
402         comment; it was required to permit, (but not to enforce), linking to
403         the static liblzma.a library, with earlier beta releases, but this
404         anomaly has now been corrected.
405
406 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
407
408         Remove zlib sources from trunk.
409         (Application builders should use free standing implementation of
410          zlib, from MinGW's package distribution page on SourceForge).
411
412 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
413
414         Remove bzip2 sources from trunk.
415         (Application builders should use free standing implementation of
416          bzip2, from MinGW's package distribution page on SourceForge).
417
418 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
419
420         Add subsystem specific sysroot mapping facility.
421
422         * src/pkghash.c: New file; required by...
423         * src/sysroot.cpp: New file; it implements...
424         (pkgXmlDocument::LoadSystemMap, pkgXmlNode::GetSysRoot): New methods.
425
426         * src/pkgbase.h: Update copyright notice.
427         (pkgXmlDocument::LoadSystemMap): Declare it.
428         (pkgXmlDocument::AddDeclaration): New inline method.
429         (pkgXmlDocument::SetRoot, pkgXmlDocument::Save): Likewise.
430         (pkgXmlNode::GetSysRoot): Declare it.
431         (pkgXmlNode::GetDocumentRoot): New inline method.
432         (pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.
433
434         * src/climain.cpp: Update copyright notice.
435         (climain): Invoke pkgXmlDocument::LoadSystemMap() as required.
436
437         * Makefile.in (CORE_DLL_OBJECTS): Add ...
438         (pkghash.$(OBJEXT), sysroot.$(OBJEXT)): ...these; upate dependencies.
439         (DEBUGLEVEL): New macro; define it.
440         (CPPFLAGS): Use it.
441
442 2010-01-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
443
444         Assign standardised keys for XML database lookup.
445
446         * src/pkgkeys.h: New file; provide public key declarations.
447         * src/pkgkeys.c: New file; implement them.
448
449         * src/pkgbind.cpp: Use them; update copyright notice.
450         * src/pkgexec.cpp, src/pkgfind.cpp, src/pkginet.cpp: Likewise.
451         * src/pkgname.cpp, src/pkgspec.cpp: Likewise.
452
453         * Makfile.in (CORE_DLL_OBJECTS): Add pkgkeys.$(OBJEXT); update all
454         dependencies accordingly.
455
456 2010-01-08  Keith Marshall  <keithmarshall@users.sourceforge.net>
457
458         Add CLI version reporting option.
459
460         * configure.ac: Update copyright notice for new year.
461         (COPYRIGHT_HOLDER): New AC_SUBST variable; define it.
462         (YEARS_OF_ISSUE): New AC_SUBST variable; define it.
463         (AC_CONFIG_FILES): Add `version.c'; source it from...
464
465         * version.c.in: ...this new file.
466
467         * Makefile.in: Update copyright notice for new year.
468         (mingw-get$(EXEEXT)): Add dependency on `version.$(OBJEXT)'.
469         (distclean): Add `version.c'.
470
471         * configure: Regenerated.
472
473         * src/clistub.c: Update copyright notice for new year.
474         (options): New array of `struct option'; define and use it as the
475         reference for `argv' parsing with `getopt_long_only()'.
476
477 2009-12-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
478
479         Add CLI support for "update" action.
480
481         * src/pkgtask.h (ACTION_UPDATE): Define it, derived from...
482         (action_update): ...this new entry in anonymous enumeration.
483         
484         * src/pkgexec.cpp (action_name): Add "update" keyword identification.
485
486         * src/pkgbase.h: Typo in comment; s/xwXmlDocument/wxXmlDocument/.
487         (pkgXmlDocument::BindRepositories): Add `force_update' parameter...
488         * src/pkgbind.cpp (pkgXmlDocument::BindRepositories): Use it to...
489         (pkgXmlDocument::SyncRepository): ...invoke this method when passed as
490         a `true' flag, in addition to (as previously) first time reference.
491
492         * src/climain.cpp (climain): Interpret "update" keyword for...
493         [ACTION_UPDATE]: ...passing state as `force_update' parameter to...
494         (pkgXmlDocument::BindRepositories): ...this method, then...
495         [!ACTION_UPDATE]: Follow with normal action processing.
496
497 2009-12-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
498
499         Add status checking for Internet URL connections.
500
501         * src/pkginet.cpp (pkgInternetAgent::QueryStatus): New method.
502         (pkgInternetStreamingAgent::Get): Use it; set `dl_status' as return
503         value, deferring failure diagnostics to callers, i.e. to...
504         (pkgXmlDocument::SyncRepositories): ...this, and to...
505         (pkgActionItem::DownloadArchiveFiles): ...this.
506
507 2009-11-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
508
509         Add package download and repository synchronisation machinery.
510
511         * src/pkgstrm.h: New header file.
512
513         * src/pkgbind.cpp, src/pkginet.cpp, src/pkgstrm.cpp,
514         src/pkgfind.cpp, src/pkgname.cpp, src/keyword.c: New files.
515         * Makefile.in (CORE_DLL_OBJECTS): Add build goals for them.
516
517         * xml: New directory.
518
519         * src/climain.cpp (climain): Establish repository bindings from...
520         * xml/profile.xml: ...this new configuration file.
521
522 2009-11-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
523
524         Add XML database bindings and preliminary action executive for CLI.
525
526         * src/pkgbase.h, src/pkgtask.h,
527         src/mkpath.h, src/vercmp.h: New header files.
528
529         * src/climain.cpp, src/pkgexec.cpp, src/pkgspec.cpp,
530         src/mkpath.c, src/vercmp.cpp, src/xmlfile.c: New files.
531
532         * Makefile.in (CORE_DLL_OBJECTS): Define initial set of files...
533         (mingw-get-0.dll): ...build them into this new DLL target; add it...
534         (all): ...as prerequisite for this primary build goal.
535
536 2009-11-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
537
538         Avoid some potential GCC warnings.
539
540         * src/clistub.c: Include process.h for `execv' prototype...
541         (main): Cast `argv' to appropriately matched type when calling it.
542
543         * src/pkginfo/driver.c: Include stdlib.h for `free' prototype.
544
545 2009-11-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
546
547         Create diagnostic message handler for CLI usage.
548
549         * src/dmh.h: New header file; it defines the public interface.
550         * src/dmh.cpp: New file; it implements the message handler.
551
552 2009-11-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
553
554         Correct some identified TinyXML issues.
555
556         * tinyxml/tinyxml.h (IsWhiteSpace): Add FIXME annotation to flag
557         probable redundancy of checks for '\n' and '\r'.
558         * tinyxml/tinyxmlparser.cpp: Revert John E's 2008-08-09 change; remove
559         all such redundancies in IsWhiteSpace() calls throughout.
560
561         * tinyxml/tinyxml.cpp (TiXmlAttribute::SetDoubleValue): Correct format
562         specification in sprintf()/snprintf() calls; "%lf" is invalid; replace
563         with "%f".
564
565 2009-10-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
566
567         Add CLI loader stub.
568
569         * src/clistub.c: New file.
570         * Makefile.in: Add build rule for it; build as...
571         (mingw-get.exe): ...this; also add to...
572         (clean): ...this goal.
573
574 2009-10-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
575
576         Set up build mechanism.
577
578         * configure.ac, Makefile.in: New files.
579         * .cvsignore (configure, autom4te.cache): Add to ignored files.
580
581 2009-10-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
582
583         Add GPL-v3 licensing terms.
584
585         * COPYING: New file, sourced from gnu.org.
586
587 2009-10-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
588
589         Add pkginfo implementation.
590
591         * src, src/pkginfo: New directories.
592         * src/pkginfo/pkginfo.h, src/pkginfo/pkginfo.l: New files.
593         * src/pkginfo/driver.c: New file.
594
595 2009-10-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
596
597         Create tdm-branch.
598
599         * All files (tdm-branch): Assign new branch tag.
600         * All top-level files: Remove from trunk.
601         * ChangeLog: New file.