OSDN Git Service

Initial implementation for "remove" feature.
[mingw/mingw-get.git] / ChangeLog
1 2011-02-27  Keith Marshall  <keithmarshall@users.sourceforge.net>
2
3         Initial implementation for "remove" feature.
4
5         * src/pkgbase.h: Update copyright notice; add current year.
6         (pkgActionItem::SetPrimary): New inline public method; declare it.
7         (pkgActionItem::SetAuthorities): New public method; declare it.
8
9         * src/pkgtask.h (ACTION_PREFLIGHT, ACTION_REMOVE_OK): New defines.
10
11         * src/pkgproc.h: Update copyright notice; add current year.
12         (pkgManifest::GetSysRootReference): New public method; declare it.
13         (pkgManifest::GetRoot): New inline method; declare and implement it.
14         (pkgManifest::DetachSysRoot): Argument type changed to const char*.
15         (pkgRemove): New extern "C" function; declare it.
16
17         * src/pkgexec.cpp (pkgActionItem::SetPrimary): Implement it, and...
18         (pkgXmlDocument::Schedule): ...use it to promote actions on all user
19         specified packages, as listed on the command line, to primary status.
20         (pkgActionItem::Execute): Repeatedly invoke...
21         (pkgActionItem::SetAuthorities): ...this; incorporate call of...
22         (pkgActionItem::DownloadArchiveFiles): ...this, within the loop, so
23         that we retry failed downloads at least a second time.
24         [ACTION_REMOVE]: Delete stub; invoke pkgRemove().
25
26         * src/pkgunst.cpp: New file.
27         (pkgActionItem::SetAuthorities): Implement it.
28         (pkgManifest::GetSysRootReference): Implement it.
29         (pkgManifest::DetachSysRoot): Implement it per new declaration.
30         (pkgRemove): Implement it.
31
32         * Makefile.in (CORE_DLL_OBJECTS): Add pkgunst.OBJEXT
33
34 2011-02-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
35
36         Work-around for improper stderr buffering in MSYS mintty and rxvt.
37         (Merged from r0-1-alpha-5 branch).
38
39         * src/dmh.cpp (dmhTypeTTY::emit_and_flush): New private method.
40         (dmhTypeTTY::printf, dmhTypeTTY::notify): Use it to force an fflush()
41         after each output record is written to stderr.
42
43         * README: Update as appropriate.
44
45 2011-02-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
46
47         Tidy up some debugging hooks.
48
49         * src/debug.h (DEBUG_INVOKED): New macro; define it.
50         (DEBUG_INVOKE_IF): Likewise; this takes arguments providing for
51         conditional invocation of code when DEBUGLEVEL is non-zero; make it
52         expand to nothing, when DEBUGLEVEL is zero.
53         (DEBUG_TRACE_INIT): Redefined macro; value changed to 0x0010.
54         (DEBUG_TRACE_TRANSACTIONS, DEBUG_SUPPRESS_INSTALLATION):
55         (DEBUG_UPDATE_INVENTORY): New macros; define them.
56
57         * src/tarproc.cpp (pkgTarArchiveInstaller::ProcessDirectory):
58         (pkgTarArchiveInstaller::ProcessDataStream): Refactor debugging hooks;
59         implement them in terms of DEBUGLEVEL, with reference to...
60         (DEBUG_SUPPRESS_INSTALLATION, DEBUG_UPDATE_INVENTORY): ...these.
61
62 2011-02-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
63
64         Make package version comparisons more robust.
65
66         Fixes an issue reported by Chris Sutcliffe: previously, version
67         comparisons were evaluated solely on the basis of differences in the
68         package version field itself.  Henceforth, if this field compares as
69         equal, then the comparison is extended to also consider differences
70         between development phase qualifiers, and, if these too compare as
71         equal, to differences in the target subsystem version fields.
72
73         * src/pkginfo/pkginfo.h (pkgSpecs::VersionComparator): New private
74         method; declare it.
75
76         * src/pkgspec.cpp (pkgSpecs::VersionComparator): Implement it.
77         (pkgSpecs::operator<, pkgSpecs::operator<=, pkgSpecs::operator>=):
78         (pkgSpecs::operator>): Use it, replacing...
79         (version): ...this static function; now unreferenced; delete it.
80
81         * src/vercmp.h (pkgVersionInfo::pkgVersionInfo): Make it inline; it
82         now delegates the entire class construction operation to...
83         (pkgVersionInfo::Parse): ...this new private method; declare it.  This
84         is also used to facilitate implementation of...
85         (pkgVersionInfo::Reset): ...this new inline method, also requiring...
86         (pkgVersionInfo::FreeAll): ...this new inline method; also now used by
87         the class destructor, it encapsulates separate calls to...
88         (pkgVersionInfo::Free): ...this original inline method, renamed...
89         (pkgVersionInfo::FreeEntry): ...as this.
90
91         * src/vercmp.cpp (pkgVersionInfo::Parse): Implement it.
92
93 2011-02-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
94
95         Merge from mingw-get-0.1-mingw32-alpha-5 bug-fix branch.
96
97         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies): Promote
98         "install" action on new prerequisites, where a previously uninstalled
99         package is required to satisfy any "upgrade" dependency.
100
101         * src/pkgexec.cpp (pkgActionList::Execute): Don't make misleading
102         claims concerning package removal.
103
104         * src/pkgtask.h (STRICTLY_GT, STRICTLY_LT, ACTION_PRIMARY): Add one
105         level of parentheses around defining expressions.
106
107 2011-02-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
108
109         Publish mingw-get-0.0-mingw32-alpha-5.1 bug-fix release.
110
111         * README: Updated to reflect changes.
112
113 2011-02-08  Keith Marshall  <keithmarshall@users.sourceforge.net>
114
115         Improve diagnostics for failed GUI invocation.
116
117         * src/guimain.cpp: New file; currently delivers only a diagnostic
118         stub, provided by Sze Howe Koh <axfangli@users.sourceforge.net>, to
119         pop-up a message block explaining why GUI mode cannot be invoked.
120
121         * Makefile.in (GUI_LDFLAGS): New macro; it is required by...
122         (gui$EXEEXT): ...this new build rule; add to prerequisites of...
123         (all): ...this [default] build rule; redefine this in terms of...
124         (BIN_PROGRAMS, LIBEXEC_PROGRAMS, LIBEXEC_DATA): ...these new macros;
125         define them, and also use them as loop iterator objectives for...
126         (install, install_strip): ...these; also schedule them...
127         (clean): ...for removal by this.
128
129         * src/clistub.c (Copyright): Add new year.
130         (main): Amend error message, if gui$EXEEXT doesn't start; make it
131         more intelligible to normal users.
132
133 2011-02-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
134
135         Correct omissions from packaged source tarball.
136
137         * Makefile.in (Copyright): Add new year.
138         (SRCDIST_FILES): Add aclocal.m4
139         (SRCDIST_SUBDIRS): Add m4
140
141 2011-01-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
142
143         Reduce path names to base names, in some diagnostic message contexts.
144
145         * src/climain.cpp: Update copyright notice for new year.
146         (climain): Extract base name from argv[0], to pass as program name tag
147         in initialisation of diagnostic message handler.
148
149         * src/dmh.h, src/dmh.cpp: Update copyright notices; make some layout
150         adjustments, for more consistent formatting style.
151
152         * src/pkgbind.cpp: Update copyright notice.
153         (pkgRepository::GetPackageList): Reduce path names for catalogue files
154         to their base names, when reporting them in diagnostic messages.
155
156 2011-01-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
157
158         Avoid a potential out-of-range action name look-up.
159
160         * src/pkgdeps.cpp: Update copyright notice for new year.
161         (pkgXmlDocument::Schedule): Mask action code with ACTION_MASK, to
162         determine correct action name when diagnosing uninstalled package.
163
164 2011-01-03  Keith Marshall  <keithmarshall@users.sourceforge.net>
165
166         Make "install" and "remove" notifications symmetric.
167
168         * configure.ac (AC_INIT): Bump version to "0.1-alpha-6cvs".
169         (YEARS_OF_ISSUE): Add new year.
170         
171         * src/pkginst.cpp: Update copyright notice for new year.
172         (pkgInstall): Add notification for package being installed.
173
174 2010-12-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
175
176         Add preliminary CLI support for "list" and "show" actions.
177
178         * src/pkgtask.h (ACTION_PRIMARY): New manifest constant; define it.
179         (ACTION_LIST, ACTION_SHOW): Likewise; cast to enumerated values for...
180         (action_list, action_show): ...these; define them.
181
182         * src/pkgexec.cpp (action_name): Add defining text for...
183         (action_list, action_show): ...these.
184
185         * src/climain.cpp: Partially revert 2010-11-01 change...
186         (climain) [! ACTION_UPDATE]: Reinstate original "if" block, moving
187         the "switch" block within it, but without the ACTION_UPDATE case.
188         [ACTION_LIST, ACTION_SHOW]: New "switch" cases; they invoke...
189         (pkgXmlDocument::DisplayPackageInfo): ...this new method.
190
191         * src/pkgbase.h (pkgXmlDocument::DisplayPackageInfo): Declare it.
192         (pkgActionItem::ConfirmInstallationStatus): New method; declare it.
193         (pkgXmlNode::GetSysRoot): Make declaration style consistent with
194         others in the class; do not name arguments in the declaration.
195         (pkgXmlNode::FindFirstAssociate): Likewise.
196         (pkgXmlNode::FindNextAssociate): Likewise.
197
198         * src/pkgshow.cpp: New file.
199         (pkgXmlDocument::DisplayPackageInfo): Implement it.
200
201         * src/pkgdeps.cpp (pkgMsgUnknownPackage): New extern "C" function;
202         implement it temporarily, pending a future i18n reimplementation.
203         (assert_installed): Drop "inline" attribute; leave it as "static".
204         Set "tarname" correctly, to match the installed package version; (it
205         previously incorrectly returned the latest available version).
206         (pkgActionItem::ConfirmInstallationStatus): Implement it.
207         (pkgXmlDocument::Schedule) [ACTION_PRIMARY]: Set as appropriate.
208         (pkgXmlDocument::Schedule) [ACTION_REMOVE || ACTION_UPGRADE]: Complain
209         if requested package is not recorded as having been installed.
210         (pkgXmlDocument::ResolveDependencies) [! ACTION_INSTALL]: Do not
211         invoke it recursively.
212
213         * Makefile.in (pkgshow.$OBJEXT): Add reference.
214
215 2010-11-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
216
217         Lay groundwork for implentation of additional actions.
218
219         * src/climain.cpp (climain): Adjust indentation; replace `if' block...
220         [action != ACTION_UPDATE]: ...with this default `switch' case, and...
221         [action == ACTION_UPDATE]: ...this as explicit "do nothing" case.
222
223 2010-10-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
224
225         mingw-get-0.1-mingw32-alpha-5 released.
226
227         * configure.ac (AC_INIT): Bump version to 0.1-alpha-5.
228         * README: Update release notes accordingly.
229         * All files (r0-1-alpha-5): Tag assigned.
230
231 2010-10-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
232
233         Make pkgInitRites/pkgLastRites processing more robust;
234         avoid a potential race condition in mingw-get-inst.
235
236         * src/rites.c: Refactor conditional code to segregate execution of...
237         [defined IMPLEMENT_INITIATION_RITES]: ...this into distinct phases.
238         (PHASE_ONE_RITES, PHASE_TWO_RITES): Define constants to identify them.
239         (do_init_rites): Renamed to...
240         (invoke_rites): ...this; inline it.
241         (pkgLastRites): Invoke it, to pre-empt rename action of...
242         (lastrites.exe): ...this, subsequently exec()ed process.
243         (perror): Issue more informative diagnostic on exec() failure.
244
245         * src/clistub.c (IMPLEMENT_INITIATION_RITES): Stipulate as...
246         (PHASE_ONE_RITES): ...this phase of implementation only.
247
248         * src/pkgexec.cpp (IMPLEMENT_INITIATION_RITES): Define to provide...
249         (PHASE_TWO_RITES): ...this phase of implementation, facilitated by...
250         (self_upgrade_rites): ...this locally defined RITES_INLINE function.
251         (pkgActionItem::Execute): Invoke it, in remove/install loop, while...
252         [init_rites_pending]: ...new loop local variable remains true.
253
254 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
255
256         Fix packaging bug in -lic package.
257
258         * Makefile.in (licdist): Use directory named
259         "share", not "shared".
260
261 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
262
263         mingw-get-0.1-mingw32-alpha-4 released.
264
265         * All files (r0-1-alpha-4): Tag assigned.
266
267 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
268
269         Add rudimentary help option.
270
271         * README: Update release notes.
272
273         * src/clistub.c: Add --help option.
274
275 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
276
277         Fix "mingw-get deletes itself" bug in last rites handling.
278
279         * README: Add new release notes.
280
281         * configure.ac: Bump version to 0.1-alpha-4.
282
283         * src/dmh.h: If __cplusplus, include <exception> and
284         declare dmh_exception class.
285
286         * src/dmh.cpp (class dmh_exception): Implement.
287         (abort_if_fatal): If DMH_FATAL, throw dmh_exception rather
288         than calling exit().
289
290         * src/climain.cpp (climain): Wrap entire function body in try/
291         catch block. If dmh_exception is caught, return EXIT_FAILURE.
292
293         * src/clistub.c (main): Capture return value of climain(). If
294         non-zero, perform last rites and return EXIT_FAILURE.
295
296 2010-08-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
297
298         mingw-get-0.1-mingw32-alpha-3 released.
299
300         * README: Add new release notes.
301
302         * All files (r0-1-alpha-3): Tag assigned.
303
304 2010-08-27  Keith Marshall  <keithmarshall@users.sourceforge.net>
305
306         Add runtime hooks to support self-upgrade for future releases.
307
308         * src/rites.c: New file; compile it free-standing, to provide...
309         (lastrites.exe): ...this helper application for context clean-up;
310         alternatively, use it as an include file, with pre-definition of...
311         (IMPLEMENT_INITIATION_RITES): ...this, to implement...
312         (pkgInitRites, pkgLastRites): ...these inline functions.
313
314         * src/clistub.c (main) [argc > 1]: Use them.
315         (progname): New local variable within `main'; set it once, then use it
316         instead of repeated references to `basename(*argv)' in diagnostics.
317         (MINGW_GET_DLL, MINGW_GET_GUI): Relocate to `src/rites.c'.
318
319         * src/debug.h (DEBUG_INHIBIT_RITES_OF_PASSAGE):
320         (DEBUG_FAIL_FILE_RENAME_RITE, DEBUG_FAIL_FILE_UNLINK_RITE): New
321         defines; they facilitate debugging of the src/rites.c code.
322
323         * Makefile.in (lastrites$EXEEXT): New target; build as prerequisite...
324         (all): ...of this primary target.
325         (install, install-strip): Install it.
326         (SRCDIST_FILES): Remove install-sh; it is now included in...
327         (build-aux): ...this directory; add it to...
328         (SRCDIST_SUBDIRS): ...this.
329
330 2010-08-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
331
332         Set default sysroots relative to mingw-get installation directory.
333
334         * xml/profile.xml (system-map) [name == default]: For each of...
335         [subsystem == mingw32]: ...set sysroot path to value of %R macro...
336         [subsystem == msys]: ...and to its %R/msys/1.0 subdirectory.
337
338 2010-08-19  Keith Marshall  <keithmarshall@users.sourceforge.net>
339
340         Some dependency resolver enhancements and bug fixes.
341
342         * src/pkgbase.h (pkgXmlNode::GetContainerAttribute): New method;
343         declare it.
344
345         * src/pkgdeps.cpp (pkgXmlNode::GetContainerAttribute): Implement it;
346         it is used to retrieve package name attributes from the containing
347         'package' element, when given a pointer to a 'release' element by...
348         (assert_unmatched, assert_installed): ...these new static functions.
349         (pkgXmlDocument::Schedule): Use them to reconstruct and register
350         dependency reference data for previously installed packages which are
351         no longer included in the distribution manifest.
352         (pkgXmlDocument::ResolveDependencies): Fix a block nesting error;
353         catch and diagnose unresolved dependencies; don't look beyond the XML
354         document root node, (tinyxml error not caught?), when searching for
355         requirements specified on container nodes.
356
357 2010-08-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
358
359         Improve scheduling of package processing requests.
360
361         * src/pkgexec.cpp (pkgXmlDocument::Schedule): Inspect entire `actions'
362         list, when checking for duplicate package processing requests; decline
363         to schedule any such duplicate, or any request which lacks a package
364         association.
365
366 2010-08-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
367
368         Lay foundation for selective compilation of debugging code.
369
370         * src/debug.h: New file...
371         * src/sysroot.cpp: Include it.
372         (pkgXmlDocument::LoadSystemMap): Make debugging output conditional...
373         [DEBUGLEVEL & DEBUG_TRACE_INIT]: ...on this new debugging state.
374
375 2010-08-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
376
377         * src/pkgkeys.h: Typo in comment: file was previously identified as
378         pkgkeys.c; corrected.
379
380 2010-08-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
381
382         Improve diagnostics for invalid references to non-release XML nodes.
383
384         * src/pkgkeys.h (value_unknown): New global string; declare it.
385         * src/pkgkeys.c (value_unknown): Implement it.
386
387         * src/pkgname.cpp (pkgArchiveName): Identify XML element type when
388         diagnosing references to elements of types other than release; use...
389         (value_unknown): ...this, as appropriate.
390
391 2010-08-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
392
393         Guard against a potential buffer overrun.
394
395         * src/pkgreqs.cpp (pkgSpecs::SetProperty): Allocate an additional
396         byte to accommodate an extra field separator, when inserting a new
397         data value into a previously empty field.
398
399 2010-07-27  Cesar Strauss  <cestrauss@gmail.com>
400
401         Handle the GNU long name tar header format.
402
403         * src/pkgproc.h (TAR_ENTITY_TYPE_GNU_LONGNAME): New manifest constant;
404         define it.
405         (pkgTarArchiveProcessor::EntityDataAsString): New protected method;
406         declare and...
407         * src/tarproc.cpp: ...implement it.
408         (pkgTarArchiveProcessor::Process): Before building the entry pathname,
409         check for a GNU long name type header; when found, read pathname from
410         the entry data area, before fetching the following header, from which
411         to retrieve the associated entity data.
412
413 2010-06-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
414
415         Work around an autoconf bug (reported by Stefano Sabatini).
416
417         * Makefile.in (VPATH): Use @top_srcdir@ instead of ${srcdir}; current
418         autoconf incorrectly elides references to @srcdir@ and ${srcdir} when
419         substituting within a VPATH specification for building `in-source'.
420         Also, prefer colons to blanks as path name separators, for improved
421         portability to non-GNU implementations of make; (recommendation by
422         Ralf Wildenhues).
423
424 2010-06-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
425
426         Include alias search, when matching component package name.
427
428         * src/keyword.c (has_keyword): Rearrange argument declarations for
429         more natural order; update all callers accordingly.  Simplify; compare
430         keyword to be matched with each successive candidate from match-list,
431         character-by-character and in-place, so avoiding memory allocation
432         for any local duplicate of the passed match-list; thus...
433         (safe_strdup): ...this static function no longer required; delete it.
434         (string.h): No references remain; do not include it.
435
436         * src/pkgfind.cpp (pkgXmlNode::FindPackageByName): Augment component
437         package name matching to include potential matches of the look-up name
438         with trailing component name stripped off, when that matches the class
439         name of an identified component package, and the initial substring of
440         the look-up name, after stripping, matches any specified alias name
441         for the containing package.
442
443 2010-06-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
444
445         Address FIXME relating to identification of distributable files.
446
447         * install-sh: Move to...
448         * build-aux: ...this new directory.
449
450         * Makefile.in (PACKAGE_DISTVERSION): Modify `sed' edit sequence; make
451         it depend on, and ensure that it incorporates the expansion of...
452         (PACKAGE_SUBSYSTEM): ...this new macro; defined as substitution of...
453         (host_os): ...this autoconf variable, set by...
454
455         * configure.ac (AC_CANONICAL_HOST): ...this; add it, requiring...
456         (AC_CONFIG_AUX_DIR): ...`build-aux' directory reference, providing...
457
458         * build-aux/config.guess, build-aux/config.sub: ...these new standard
459         files; import them from the standard `build-aux' repository.
460
461 2010-05-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
462
463         Bump version for next release cycle.
464
465         * configure.ac (AC_INIT): Bump version suffix to alpha-3.
466
467 2010-05-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
468
469         mingw-get-0.1-mingw32-alpha-2 released.
470
471         * README: Add new release notes.
472
473         * xml/profile.xml: Update to use default referencing for...
474         (package-list.xml.lzma): ...this repository master catalogue.
475
476         * All files (r0-1-alpha-2): Tag assigned.
477
478 2010-05-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
479
480         Make provision to protect user's profile settings during upgrade.
481
482         * Makefile.in (install): Remove `profile.xml'; replace it with...
483         (install-profile): ...this new prerequisite installation goal; it
484         renames the installed copy of `profile.xml' as `defaults.xml', within
485         the installed package image.
486
487         * src/pkgkeys.h (defaults_key): New key; declare it.
488         * src/pkgkeys.c: Some cosmetic formatting (tabulation) adjustments.
489         (defaults_key): Implement it; it refers to the `defaults.xml' file.
490
491         * src/climain.cpp (climain): Check `profile_key' for accessibility of
492         the `profile.xml' file; if [! R_OK] emit a diagnostic warning, fall
493         back on `defaults_key', and attempt to load configuration from the
494         distributed `defaults.xml' file.
495
496 2010-05-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
497
498         Add preliminary support for future `-reinstall' option.
499
500         * src/pkgexec.cpp (pkgActionItem::Execute) [ACTION_INSTALL]: Force
501         installation if `-reinstall' option is selected, overriding state of
502         any prior installation; temporarily assume that this option is always
503         selected, to permit proper `upgrade' operation in the absence of any
504         functional `uninstall' capability, and pending implementation of a
505         mechanism for interpreting user specified options.
506
507 2010-05-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
508
509         Correct handling for "%R" macro in relative sysroot path specs.
510
511         * src/tarproc.cpp (pkgTarArchiveProcessor): In constructor, expand the
512         sysroot path specification a second time, to capture the effect of any
513         embedded macros, before computing the recorded `sysroot_len' value.
514
515 2010-05-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
516
517         Handle "%" wildcard matches in package and subsystem version strings.
518
519         * src/pkgbase.h (pkgSpecs): Forward declare it.
520         (pkgActionItem::~pkgActionItem): Declare explicit destructor.
521         (pkgActionItem::SetRequirements): Add extra `pkgSpecs*' argument;
522         update references, passing additional argument in...
523
524         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies): ...this.
525
526         * src/pkgexec.cpp (pkgActionItem::~pkgActionItem): Implement it.
527         (pkgActionItem::SetRequirements): Delete obsolete implementation.
528
529         * src/pkginfo/pkginfo.h: Update copyright notice; add year 2010.
530         (pkgSpecs::GetTarName): New public method; declare it.
531         (pkgSpecs::SetProperty): New private method; declare it.
532         (pkgSpecs::SetPackageName): New inline method; implement it.
533         (pkgSpecs::SetPackageVersion, pkgSpecs::SetPackageBuild): Likewise.
534         (pkgSpecs::SetSubSystemName, pkgSpecs::SetSubSystemVersion): Likewise.
535         (pkgSpecs::SetSubSystemBuild, pkgSpecs::SetReleaseStatus): Likewise.
536         (pkgSpecs::SetReleaseIndex, pkgSpecs::SetComponentClass): Likewise.
537         (pkgSpecs::SetComponentVersion, pkgSpecs::SetPackageFormat): Likewise.
538         (pkgSpecs::SetCompressionType): Likewise.
539
540         * src/pkginfo/pkginfo.l: Update copyright notice; add year 2010.
541         (TRANS): Interpret "%" as wildcard in version string matches.
542
543         * src/pkgreqs.cpp: New file.
544         (pkgActionItem::SetRequirements): Reimplement per new declaration;
545         it now always allocates heap memory for requirements specifications.
546         (pkgSpecs::GetTarName, pkgSpecs::SetProperty): Implement them.
547
548         * Makefile.in (CORE_DLL_OBJECTS): Add `pkgreqs.$(OBJEXT)'.
549
550 2010-04-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
551
552         Revert 2010-04-04 refactoring of tarproc.cpp and tarinst.cpp
553
554         * src/tarinst.cpp: File removed; its content merged into...
555         * src/tarproc.cpp: ...this; it cannot be cleanly separated out.
556
557         * Makefile.in (tarinst.$OBJEXT): Remove reference.
558
559 2010-04-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
560
561         Handle "*" wildcard matches in package and subsystem version strings.
562
563         * src/vercmp.h (pkgVersionInfo::version_string): New private member
564         variable; it stores a pointer to a dynamically allocated local copy of
565         the invariant `version' argument, to facilitate correct parsing.
566         (pkgVersionInfo::build_string): Likewise; it provides similar handling
567         for the invariant `build' argument.
568         (pkgVersionInfo::Free): New private inline method; it provides a NULL
569         pointer safe wrapper, calling the C library `free()' function, (since
570         some implementations are believed to be unsafe); it is used by...
571         (pkgVersionInfo::~pkgVersionInfo): ...this new inline destructor, to
572         release the memory allocated by the constructor, for `version_string'
573         and `build_string'.
574
575         * src/vercmp.cpp (pkgVersionInfo::pkgVersionInfo): Allocate memory for
576         `version_string' and `build_string', as required; populate it.
577         Explicitly handle "*" as a `match anything' wildcard...
578         (pkgVersionInfo::Compare): ...matching it as `equal' to everything.
579
580 2010-04-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
581
582         Correct omission from configure script prerequisite checks.
583
584         * aclocal.m4 (MINGW_AC_OUTPUT): New macro; it wraps AC_OUTPUT itself,
585         adding a trap to force an abort if any preceding prerequisite check
586         was handled by MINGW_AC_ASSERT_MISSING.
587
588         * configure.ac: Qualify package component types, in prerequisite
589         checks handled by MINGW_AC_ASSERT_MISSING; invoke MINGW_AC_OUTPUT
590         in place of AC_OUTPUT.
591
592 2010-04-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
593
594         Add configure script checks for prerequisite library headers.
595         (Thanks to Cesar Strauss for proposing a rudimentary implementation).
596
597         * aclocal.m4: New file; it does no more than include...
598         * m4/missing.m4: ...this; new file incorporated from build-aux module.
599
600         * configure.ac: Add AC_CHECK_HEADER assertions for...
601         (zlib.h, bzlib.h, lzma.h): ...these; invoke MINGW_AC_ASSERT_MISSING in
602         respect of each failing assertion.
603
604 2010-04-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
605
606         Case-insensitive subsystem name matching revisited.
607
608         * src/pkgfind.cpp (pkgXmlDocument::FindPackageByName): Use...
609         (subsystem_strcmp): ...this to match subsystem names, instead of...
610         (match_if_explicit): ...this.
611
612 2010-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
613
614         Enable recursive processing of repository package lists.
615
616         * src/pkgbase.h (pkgXmlDocument::SyncRepository): Make it public.
617
618         * src/pkgbind.cpp (pkgRepository): New locally defined and implemented
619         class; it facilitates recursive loading and parsing of package lists,
620         replacing much of the original non-recursive functionality within...
621         (pkgXmlDocument::BindRepositories): ...this; use it.
622
623 2010-04-04  Keith Marshall  <keithmarshall@users.sourceforge.net>
624
625         Implement installer function; use per-package file manifests.
626
627         * src/pkgproc.h (pkgManifest): New class; declare it.
628         (pkgArchiveProcessor::origin): New protected member variable.
629         (pkgArchiveProcessor::sysroot_len): New protected member variable.
630         (pkgArchiveProcessor::installed): Type changed to `pkgManifest *'.
631         (pkgTarArchiveInstaller::Process): Declare specialisation hook.
632         (pkgTarArchiveInstaller::UpdateInstallationManifest): Disused member
633         function; remove redundant declaration from class definition.
634         (pkgInstall): New generalised installation function; declare it.
635         (pkgRegister): New function; declare it.
636
637         * src/pkginst.cpp: New file.
638         (pkgManifest, pkgInstall, pkgRegister): Implement them.
639
640         * src/pkgexec.cpp (pkgActionItem::Execute): Use `pkgInstall' in place
641         of stub formerly provided here.
642
643         * src/pkgkeys.h (manifest_key, reference_key): New keys; declare them.
644         * src/pkgkeys.c (manifest_key, reference_key): Implement them.
645
646         * src/tarproc.cpp: Code refactored.
647         (pkgTarArchiveProcessor::sysroot_len): Initialise it.
648         (pkgTarArchiveProcessor::origin): Initialise it.
649         (pkgTarArchiveProcessor::installed): Initialise; associate it with a
650         pkgManifest class entity, and populate this as appropriate.
651         (pkgTarArchiveProcessor::~pkgTarArchiveProcessor): Add explicit clean
652         up of linked `pkgManifest *' entity referenced by `installed'.
653         (pkgTarArchiveProcessor::Process) [TAR_ENTITY_TYPE_DIRECTORY]: Add
654         braces to demarcate localised inner scope of string scan for removal
655         of trailing directory name separators; (thanks to Cesar Strauss for
656         reporting invalid local pointer declaration error in GCC >= 4.4).
657         (pkgTarArchiveInstaller::UpdateInstallationManifest): Deleted.
658         (pkgTarArchiveInstaller::pkgTarArchiveInstaller): Factor out.
659         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
660         (pkgTarArchiveInstaller::ProcessDataStream): Likewise.
661         (commit_saved_entity): Likewise.
662
663         * src/tarinst.cpp: New file; it implements...
664         (pkgTarArchiveInstaller::Process): ...this new specialisation
665         of the original pkgTarArchiveProcessor::Process method...
666         (pkgTarArchiveInstaller::pkgTarArchiveInstaller): ...and this
667         refactored code, abstracted from src/tarproc.cpp and modified to
668         use the pkgManifest class for installation tracking.
669         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
670         (pkgTarArchiveInstaller::ProcessDataStream): Likewise.
671         (commit_saved_entity): Relocated from src/tarproc.cpp.
672
673         * Makefile.in (CORE_DLL_OBJECTS): Add...
674         (pkginst.OBJEXT, tarinst.OBJEXT): ...these new object files.
675
676 2010-03-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
677
678         Guard against NULL pointer dereferences in tinyxml code.
679
680         * src/pkgbase.h (pkgXmlNode::GetName): Verify `this' pointer is
681         non-NULL, before invoking the underlying tinyxml method.
682         (pkgXmlNode::GetParent, pkgXmlNode::GetChildren): Likewise.
683         (pkgXmlNode::GetNext, pkgXmlNode::GetPropVal): Likewise.
684         (pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.
685         (pkgXmlNode::GetDocumentRoot): Likewise.
686         (pkgXmlNode::IsElementOfType): Likewise.
687
688 2010-03-28  Cesar Strauss  <cestrauss@gmail.com>
689
690         Avoid running InternetAttemptConnect in pkgInternetAgent
691         constructor, since it is called during DLL initialisation.
692
693         * src/pkginet.cpp (pkgInternetAgent::pkgInternetAgent): Move the
694         InternetAttemptConnect call from constructor...
695         (pkgInternetAgent::OpenURL): ...to here.
696
697 2010-03-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
698
699         Automate object code dependency tracking.
700
701         * Makefile.in (DEPFLAGS): New macro; define it.
702         (%.OBJEXT: %.c, %.OBJEXT: %.cpp): Add dependency generator commands...
703         (%.d): ...to create these dependency maps; `sinclude' them, and...
704         (clean): ...remove them.
705         
706         * .cvsignore (*.d): Add wild card template to match them.
707
708 2010-03-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
709
710         Support case insensitive matching for file and subsystem names.
711
712         * src/pkgbase.h (safe_strcmp): New inline function; it provides NULL
713         argument safe comparison of strings, returning the boolean inverse of
714         the `strcmp' result, using either case-sensitive or case-insensitive
715         semantics; derive it from...
716         (match_if_explicit): ...this; redefine as macro; invoke `safe_strcmp'
717         using explicitly case-sensitive semantics.
718         (subsystem_strcmp): New macro; it invokes `safe_strcmp' with either
719         case-sensitive or case-insensitive semantics, depending on...
720         (CASE_INSENSITIVE_SUBSYSTEMS): ...this new context selection macro; it
721         fixes the choice between case-sensitive and case-insensitive matching
722         semantics for any given implementation, at compile time.
723         (pkg_strcmp): New macro; it invokes `safe_strcmp' with either
724         case-sensitive or case-insensitive semantics, depending on...
725         (CASE_INSENSITIVE_FILESYSTEM): ...this new context selection macro; it
726         fixes the choice between case-sensitive and case-insensitive matching
727         semantics for any given implementation, at compile time.
728
729         * src/sysroot.cpp (pkgXmlNode::GetSysRoot): Use `subsystem_strcmp'.
730
731 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
732
733         Add preliminary support for virtual packages.
734
735         * src/pkgkeys.h (yes_value, no_value): Redefine as aliases...
736         (value_yes, value_no): ...for these new global strings; declare them.
737         (value_none, value_virtual): New global strings; declare them.
738
739         * src/pkgkeys.c (yes_value, no_value): Rename...
740         (value_yes, value_no): ...to implement these, respectively.
741         (value_none, value_virtual): Implement them.
742
743         * src/pkgname.cpp (pkgXmlNode::ArchiveName): Check containing package
744         node for `class' attribute set to `value_virtual'; if present, always
745         return the effective `tarname' property as `value_none'.
746
747         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): For packages
748         with an effective `tarname' of `value_none', do not download anything.
749
750         * src/pkgexec.cpp (pkgActionItem::Execute): For packages with an
751         effective `tarname' of `value_none', do not invoke any tar archive
752         processing function.
753
754 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
755
756         Don't write installation records for unavailable packages.
757
758         * src/tarproc.cpp (pkgTarArchiveInstaller): In constructor, ensure
759         archive is ready for processing, before initialising an installation
760         manifest record.
761
762 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
763
764         Rationalise path identification for XML file locations.
765
766         * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Use `xmlfile()'
767         function to locate `sysroot' map file; free memory when done.
768         (pkgXmlDocument::UpdateSystemMap): Likewise.
769         (sigpath): Static global variable disused; delete it.
770
771 2010-03-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
772
773         Extend package name search to include component packages.
774
775         * src/pkgfind.cpp (pkgHasMatchingName): Remove; fold it into...
776         (pkgXmlNode::FindPackageByName): ...this; augment to extend search
777         within package definition elements, seeking a potential match on an
778         included component package name or component class-implied name.
779
780         * src/pkgkeys.h (class_key): New global string constant; declare it.
781         * src/pkgkeys.c (class_key): Implement it.
782
783 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
784
785         Bump version for next release cycle.
786
787         * configure.ac (AC_INIT): Bump version suffix to alpha-2.
788
789 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
790
791         mingw-get-0.1-mingw32-alpha-1 released.
792
793 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
794
795         Prepare initial package release.
796
797         * README: New file; use it to source release notes.
798
799         * Makefile.in (SRCDIST_FILES): Use ...
800         (LICENCE_FILES): ...this new macro; define it.
801         (licdist): New build goal; implement it.
802         (bindist): Require it; add alternative `zip' format package.
803
804         * xml/profile.xml (repository): Set default `package-index' name.
805         (system-map): Normalise spelling for default `sysroot' path names.
806
807 2010-02-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
808
809         Add directory/file records in installation manifests.
810
811         * src/pkgkeys.h (dirname_key, filename_key): New strings; declare...
812         * src/pkgkeys.c (dirname_key, filename_key): ...and implement them.
813
814         * src/pkgproc.h (pkgArchiveProcessor::installed): New class member
815         variable; declare it.
816         (pkgTarArchiveInstaller::UpdateInstallationManifest): New method;
817         declare it.
818
819         * src/tarproc.cpp: Miscellaneous comment updates.
820         (pkgTarArchiveInstaller): In constructor...
821         (pkgTarArchiveInstaller::installed): ...use new member variable...
822         (pkgArchiveProcessor::installed): ...inherited from this.
823         (pkgTarArchiveInstaller::UpdateInstallationManifest): Implement and...
824         (pkgTarArchiveInstaller::ProcessDataStream): ...use it.
825         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
826
827 2010-02-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
828
829         Work around a deficiency in Microsoft's stat() implementation.
830
831         * src/tarproc.cpp (pkgTarArchiveProcessor::ProcessDirectory): Don't
832         pass a `pathname' argument with trailing slashes; strip them off.
833
834 2010-02-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
835
836         Add machinery for installation and packaging for distribution.
837
838         * install-sh: New file; source it from autoconf distribution.
839
840         * configure.ac (AC_PREFIX_DEFAULT): Assign it as `C:/MinGW'.
841         (AC_PROG_MKDIR_P, AC_PROG_INSTALL, AC_PROG_LN_S): Invoke these.
842         (STRIP): New output variable; use AC_CHECK_TOOL to define it.
843
844         * Makefile.in (abs_top_srcdir): Define to AC_SUBST value.
845         (PACKAGE_TARNAME, PACKAGE_VERSION): Define to AC_SUBST values.
846         (prefix, exec_prefix, bindir, libexecdir, localstatedir): Likewise.
847         (INSTALL, INSTALL_PROGRAM, INSTALL_SCRIPT, INSTALL_DATA): Likewise.
848         (STRIP): New macro; define it using AC_CHECK_TOOL substitution.
849         (mkinstalldirs): New macro; define it as AC_PROG_MKDIR_P result.
850         (LN_S): New macro; define it as AC_PROG_LN_S result.
851         (dist, srcdist, bindist): New build objectives; implement them.
852         (install, installdirs, install-strip, maintainer-clean): Likewise.
853         (SRCDIST_FILES, SRCDIST_SUBDIRS): New macros; define them.
854         (PACKAGE_DISTNAME, PACKAGE_DISTVERSION): Likewise.
855         (PACKAGE_DISTROOT, PACKAGE_ROOTVERSION): Likewise.
856         (PACKAGE_CONFIG_DIR): Likewise.
857
858 2010-02-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
859
860         Implement package installer for tar archives.
861
862         * src/pkgexec.cpp (pkgXmlDocument::Execute): Replace existing
863         stub implementation of installer, using methods provided by...
864         * src/pkgproc.h, src/tarproc.cpp: ...these new files, with trap...
865         * src/pkgdeps.cpp (pkgXmlDocument::Schedule) [installed]: Add entry...
866         (pkgActionItem::Selection) [to_remove]: ...for this; use it to detect
867         `install' requests for packages which are aleady installed.
868
869         * Makefile.in (CORE_DLL_OBJECTS): Add tarproc.$(OBJEXT); specify
870         dependencies as appropriate.
871
872         * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Don't commit
873         newly created `sysroot' mapping records to disk; defer to...
874         (pkgXmlDocument::UpdateSystemMap): ...this new method.
875         (sigpath): Make it a global variable, with file (static) scope.
876
877         * src/climain.cpp (pkgXmlDocument::UpdateSystemMap): Invoke it.
878
879         * src/pkgkeys.h (download_key, modified_key, source_key): New global
880         string variables; declare them, providing their implementations...
881         * src/pkgkeys.c (download_key, modified_key, source_key): ...here.
882         * src/pkgname.cpp (download_key, source_key): Use them.
883
884         * src/pkginet.cpp (pkgActionItem::ArchivePath): Delete; replace...
885         * src/mkpath.c (pkgArchivePath): ...with this free standing function.
886         * src/mkpath.h (pkgArchivePath): Declare its prototype.
887
888         * src/pkgbase.h (pkgActionItem::ArchivePath): Delete declaration.
889         (pkgXmlDocument): Add a default constructor; implement as `inline'.
890         (pkgXmlDocument::AddDeclaration): Use heap memory to allocate the new
891         declaration object, instead of `auto' variable, to avoid scope error.
892         (pkgXmlDocument::UpdateSystemMap): Declare it.
893
894 2010-01-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
895
896         Implement rudimentary dependency resolver.
897
898         * src/pkgdeps.cpp: New file.
899
900         * Makefile.in (CORE_DLL_OBJECTS): Add pkgdeps.$(OBJEXT) reference;
901         establish header file dependencies.
902
903         * src/pkgbase.h (to_remove, to_install, selection_types): New enum.
904         (pkgActionItem::selection): Extend it to store as enumerated pair...
905         (pkgActionItem::SelectPackage): New inline method; assign them.
906         (pkgActionItem::Selection): New inline method; retrieve them.
907         (pkgXmlNode::GetInstallationRecord): New method; declare it.
908
909         * src/pkgexec.cpp (pkgActionItem): In constructor...
910         (selection): ...initialise both references in enumerated pair.
911         (pkgActionItem::GetReference): Use `Selection()' method.
912         (pkgActionItem::SelectIfMostRecent): Ditto; also correct logic for
913         making selection, and assign to `to_install' element.
914         (pkgXmlDocument::Schedule): Don't update `request'.
915         (pkgActionItem::Execute): Implement as stub.
916
917         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): Use new
918         `Selection()' method.
919
920         * src/pkgkeys.h (yes_value, no_value): Declare new string constants.
921         * src/pkgkeys.c (yes_value, no_value): Implement them.
922
923         * src/vercmp.cpp: Update copyright notice.
924         (pkgVersionInfo::operator<=): Bug fix; must test for `<', but had `>'.
925
926 2010-01-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
927
928         Avoid segmentation faults when processing invalid data streams.
929
930         * src/pkgstrm.h: Update copyright notice.
931         (pkgArchiveStream::IsReady): New pure virtual method.
932         (pkgRawArchiveStream::IsReady): Provide inline implementation.
933         (pkgGzipArchiveStream::IsReady): Likewise.
934         (pkgBzipArchiveStream::IsReady): Likewise.
935         (pkgLzmaArchiveStream::IsReady): Likewise.
936         (pkgXzArchiveStream::IsReady): Likewise.
937
938         * src/pkgstrm.cpp: Update copyright notice.
939         (pkgLzmaArchiveStream, pkgXzArchiveStream) [fd == -1]: Decline to
940         perform any form of read or decode processing.
941
942         * src/pkginet.cpp (pkgInternetLzmaStreamingAgent): Use `fd = -2' as
943         pseudo-descriptor for the pkgLzmaArchiveStream derived component of
944         this internet data streaming class.
945
946 2010-01-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
947
948         Require liblzma >= liblzma-4.999.9beta_20091209-3-mingw32-dev
949
950         * src/pkgstrm.h (LZMA_API_STATIC): Remove definition and associated
951         comment; it was required to permit, (but not to enforce), linking to
952         the static liblzma.a library, with earlier beta releases, but this
953         anomaly has now been corrected.
954
955 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
956
957         Remove zlib sources from trunk.
958         (Application builders should use free standing implementation of
959          zlib, from MinGW's package distribution page on SourceForge).
960
961 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
962
963         Remove bzip2 sources from trunk.
964         (Application builders should use free standing implementation of
965          bzip2, from MinGW's package distribution page on SourceForge).
966
967 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
968
969         Add subsystem specific sysroot mapping facility.
970
971         * src/pkghash.c: New file; required by...
972         * src/sysroot.cpp: New file; it implements...
973         (pkgXmlDocument::LoadSystemMap, pkgXmlNode::GetSysRoot): New methods.
974
975         * src/pkgbase.h: Update copyright notice.
976         (pkgXmlDocument::LoadSystemMap): Declare it.
977         (pkgXmlDocument::AddDeclaration): New inline method.
978         (pkgXmlDocument::SetRoot, pkgXmlDocument::Save): Likewise.
979         (pkgXmlNode::GetSysRoot): Declare it.
980         (pkgXmlNode::GetDocumentRoot): New inline method.
981         (pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.
982
983         * src/climain.cpp: Update copyright notice.
984         (climain): Invoke pkgXmlDocument::LoadSystemMap() as required.
985
986         * Makefile.in (CORE_DLL_OBJECTS): Add ...
987         (pkghash.$(OBJEXT), sysroot.$(OBJEXT)): ...these; upate dependencies.
988         (DEBUGLEVEL): New macro; define it.
989         (CPPFLAGS): Use it.
990
991 2010-01-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
992
993         Assign standardised keys for XML database lookup.
994
995         * src/pkgkeys.h: New file; provide public key declarations.
996         * src/pkgkeys.c: New file; implement them.
997
998         * src/pkgbind.cpp: Use them; update copyright notice.
999         * src/pkgexec.cpp, src/pkgfind.cpp, src/pkginet.cpp: Likewise.
1000         * src/pkgname.cpp, src/pkgspec.cpp: Likewise.
1001
1002         * Makfile.in (CORE_DLL_OBJECTS): Add pkgkeys.$(OBJEXT); update all
1003         dependencies accordingly.
1004
1005 2010-01-08  Keith Marshall  <keithmarshall@users.sourceforge.net>
1006
1007         Add CLI version reporting option.
1008
1009         * configure.ac: Update copyright notice for new year.
1010         (COPYRIGHT_HOLDER): New AC_SUBST variable; define it.
1011         (YEARS_OF_ISSUE): New AC_SUBST variable; define it.
1012         (AC_CONFIG_FILES): Add `version.c'; source it from...
1013
1014         * version.c.in: ...this new file.
1015
1016         * Makefile.in: Update copyright notice for new year.
1017         (mingw-get$(EXEEXT)): Add dependency on `version.$(OBJEXT)'.
1018         (distclean): Add `version.c'.
1019
1020         * configure: Regenerated.
1021
1022         * src/clistub.c: Update copyright notice for new year.
1023         (options): New array of `struct option'; define and use it as the
1024         reference for `argv' parsing with `getopt_long_only()'.
1025
1026 2009-12-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1027
1028         Add CLI support for "update" action.
1029
1030         * src/pkgtask.h (ACTION_UPDATE): Define it, derived from...
1031         (action_update): ...this new entry in anonymous enumeration.
1032         
1033         * src/pkgexec.cpp (action_name): Add "update" keyword identification.
1034
1035         * src/pkgbase.h: Typo in comment; s/xwXmlDocument/wxXmlDocument/.
1036         (pkgXmlDocument::BindRepositories): Add `force_update' parameter...
1037         * src/pkgbind.cpp (pkgXmlDocument::BindRepositories): Use it to...
1038         (pkgXmlDocument::SyncRepository): ...invoke this method when passed as
1039         a `true' flag, in addition to (as previously) first time reference.
1040
1041         * src/climain.cpp (climain): Interpret "update" keyword for...
1042         [ACTION_UPDATE]: ...passing state as `force_update' parameter to...
1043         (pkgXmlDocument::BindRepositories): ...this method, then...
1044         [!ACTION_UPDATE]: Follow with normal action processing.
1045
1046 2009-12-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
1047
1048         Add status checking for Internet URL connections.
1049
1050         * src/pkginet.cpp (pkgInternetAgent::QueryStatus): New method.
1051         (pkgInternetStreamingAgent::Get): Use it; set `dl_status' as return
1052         value, deferring failure diagnostics to callers, i.e. to...
1053         (pkgXmlDocument::SyncRepositories): ...this, and to...
1054         (pkgActionItem::DownloadArchiveFiles): ...this.
1055
1056 2009-11-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
1057
1058         Add package download and repository synchronisation machinery.
1059
1060         * src/pkgstrm.h: New header file.
1061
1062         * src/pkgbind.cpp, src/pkginet.cpp, src/pkgstrm.cpp,
1063         src/pkgfind.cpp, src/pkgname.cpp, src/keyword.c: New files.
1064         * Makefile.in (CORE_DLL_OBJECTS): Add build goals for them.
1065
1066         * xml: New directory.
1067
1068         * src/climain.cpp (climain): Establish repository bindings from...
1069         * xml/profile.xml: ...this new configuration file.
1070
1071 2009-11-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
1072
1073         Add XML database bindings and preliminary action executive for CLI.
1074
1075         * src/pkgbase.h, src/pkgtask.h,
1076         src/mkpath.h, src/vercmp.h: New header files.
1077
1078         * src/climain.cpp, src/pkgexec.cpp, src/pkgspec.cpp,
1079         src/mkpath.c, src/vercmp.cpp, src/xmlfile.c: New files.
1080
1081         * Makefile.in (CORE_DLL_OBJECTS): Define initial set of files...
1082         (mingw-get-0.dll): ...build them into this new DLL target; add it...
1083         (all): ...as prerequisite for this primary build goal.
1084
1085 2009-11-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
1086
1087         Avoid some potential GCC warnings.
1088
1089         * src/clistub.c: Include process.h for `execv' prototype...
1090         (main): Cast `argv' to appropriately matched type when calling it.
1091
1092         * src/pkginfo/driver.c: Include stdlib.h for `free' prototype.
1093
1094 2009-11-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
1095
1096         Create diagnostic message handler for CLI usage.
1097
1098         * src/dmh.h: New header file; it defines the public interface.
1099         * src/dmh.cpp: New file; it implements the message handler.
1100
1101 2009-11-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
1102
1103         Correct some identified TinyXML issues.
1104
1105         * tinyxml/tinyxml.h (IsWhiteSpace): Add FIXME annotation to flag
1106         probable redundancy of checks for '\n' and '\r'.
1107         * tinyxml/tinyxmlparser.cpp: Revert John E's 2008-08-09 change; remove
1108         all such redundancies in IsWhiteSpace() calls throughout.
1109
1110         * tinyxml/tinyxml.cpp (TiXmlAttribute::SetDoubleValue): Correct format
1111         specification in sprintf()/snprintf() calls; "%lf" is invalid; replace
1112         with "%f".
1113
1114 2009-10-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
1115
1116         Add CLI loader stub.
1117
1118         * src/clistub.c: New file.
1119         * Makefile.in: Add build rule for it; build as...
1120         (mingw-get.exe): ...this; also add to...
1121         (clean): ...this goal.
1122
1123 2009-10-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
1124
1125         Set up build mechanism.
1126
1127         * configure.ac, Makefile.in: New files.
1128         * .cvsignore (configure, autom4te.cache): Add to ignored files.
1129
1130 2009-10-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
1131
1132         Add GPL-v3 licensing terms.
1133
1134         * COPYING: New file, sourced from gnu.org.
1135
1136 2009-10-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
1137
1138         Add pkginfo implementation.
1139
1140         * src, src/pkginfo: New directories.
1141         * src/pkginfo/pkginfo.h, src/pkginfo/pkginfo.l: New files.
1142         * src/pkginfo/driver.c: New file.
1143
1144 2009-10-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
1145
1146         Create tdm-branch.
1147
1148         * All files (tdm-branch): Assign new branch tag.
1149         * All top-level files: Remove from trunk.
1150         * ChangeLog: New file.