OSDN Git Service

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