            __  _  _  _ _________________________________________
           | /.|_)|_)/ \         DJGPP Package manager           |
           |/_||  |  \_/            by Richard Dawe              |
           |_ http://www.phekda.freeserve.co.uk/richdawe/zippo/ _|

zippo Changelog
~~~~~~~~~~~~~~~

$Id: changes.txt,v 1.33 2001/08/27 16:12:07 richdawe Exp $

0.1.5 2001-08-27
----------------

- '--check-integrity' now ignores virtual and group packages.
  (Tim van Holder, Richard Dawe)

- Some build improvements in the Makefiles: zippo should be built less
  frequently now, because comptime.[ch] generated better; some cruft
  removed; binaries left in source directory and copied into bin/ and lib/
  (Tim van Holder).

- Fixed a parsing bug in user specifiers - e.g.:

      zippo -q 'binutils 2.* (binaries)'

  should now match.

- '--rcfile' should work again.

- The test suite now uses zippo's default configuration file. This should
  avoid problems that can be caused by a non-default configuration file
  (e.g. zippo generating warnings, causing a test to fail).

- Queries on package files or an available package will now show correctly
  whether the dependencies are satisfied by the installed packages.

- Packages can now be installed by name, e.g.:

      zippo -i -A 'gcc (binaries)'

0.1.4 2001-07-01
----------------

- Added a script to generate a package containing all DSMs from a mirror
  of the DJGPP archive - scripts/pkgdsms.sh.

- Fix for bug #32: "maintainer & maintainer-email DSM directives not
  supported." Up to 8 maintainer* directives are now supported.

- Fix for bug #35: "zippo crashes on exit."

- configure script improvements: make help for options blend in with
  help for configure's other options; use autoheader to generate config.hin;
  update bzip2 library tests to work with bzip2 1.0; fix --with-pmode-stub
  to check value of $withval; allow PMSTUB to be called from any directory
  in the source tree, not just src/. (Tim van Holder)

- Updated the DSM specification version 0.5.0 to clarify certain points -
  use of 'type' instead of 'dsm-type'; purpose of standard provisions.

- '--initdb' should now detect and install a platform DSM for Windows ME.

- Various minor bugs were fixed in the DSM parser.

- When installing packages from ZIP files, zippo will now preserve
  the timestamp on the files. I.e. the extracted files will have the same
  date & time as the original file in the ZIP file.

- The libzippo headers now include version information: libzippo/dsm.h
  defines DSM_VERSION_MAJOR, DSM_VERSION_MINOR, DSM_VERSION_SUBMINOR
  to contain the digits of the supported DSM specification version;
  libzippo/version.h defines LIBZIPPO_VERSION_MAJOR, LIBZIPPO_VERSION_MINOR,
  LIBZIPPO_VERSION_SUBMINOR to contain the digits of the libzippo version.

- Version 0.5.1 of the DSM specification is now supported. New features
  supported are: the 'release' component of version information,
  to support multiple releases of a package.

- The DSM parser now checks 'dsm-version' in the DSM file, to see if
  it supports the version of the DSM specification used.

- zippo now checks the integrity of all archives belonging to a package,
  before installing. For ZIP files the CRC for each file is checked.

- Fixed a bug in version comparisons, which may have caused weird
  side-effects when upgrading packages.

- If a package consists of a single ZIP file, then zippo will now install
  that package using that ZIP file. Previously it could only install
  from a ZIP file with the exact name from the DSM. For example: if a DSM
  contained 'zip: foo.zip', then previously you had to install using
  a file called 'foo.zip'; now it can be called any name
  (with a .zip extension).

0.1.3 2001-04-18
----------------

- '-q <package> --long-info' should now work for packages without DSMs.

- Added introduction to 'dsmcheck' documentation.

- Added platform DSM for Windows 3.x.

- '--syncdb' now synchronises with the package DSMs built into zippo.

- Install, uninstall and upgrade should now back up changed files.

- Removed getopt code, since it's not used anymore - popt replaced it
  a long time ago.

- Uninstalls now handle packages without DSMs or MD5 hashes better -
  the user is prompted whether each file should be removed, backed up, kept
  or whether the uninstall should be aborted. zippo has no way of knowing
  which files have modified, when there are no MD5 hashes.

- Binutils version now included in build information shown by 'zippo -V'.

- Uninstall now aborts, if it failed while removing package files.
  Previously it would remove references to the package from zippo's
  database, leaving the database in a bad state.

- Uninstall and upgrade would previously proceed, when dependencies would
  be broken. They now abort.

- Rewrote the configuration file (zipporc) parsing, using flex and bison.
  It should now be more robust and easier to maintain. Spaces are now
  allowed in filenames, as long as they are enclosed in double quotes.

- When installing a package that contains info files, zippo will run
  'install-info' automatically, to add entries to the info directory.
  Similarly when uninstalling a package that contains info files, zippo will
  run 'install-info', to remove its info directory entries.

0.1.3 alpha 1 2001-02-23
------------------------

- Fixed install target to correctly install text documents.

- Fixed regression in handling of missing ZIPs.

- Added 'package_set_defaults()' function to set sensible defaults in
  the absence of information from a DSM.

- Added basic handling of 'duplicate-action' in install.

- Fixed handling of 'mailing-list-description'.

- Added a new function 'packlist_find()', which will find packages based
  on string input. There can be multiple matching methods, but currently
  only simple string matching is supported. The single query method
  (by package name) has been updated to use this.

- Added support for wildcards in version specifiers. This should allow
  the query options to be more useful in the future
  (e.g. "-q 'fileutils 4.*'"). The function 'dsm_parse_wildcard_version()'
  will parse this kind of version specifier.

- {die,warn,info}f() functions now use v*printf() instead of the internal
  library function _doprnt(), to increase portability.

- 'dsmcheck' now works for DSM files in archives.

- Added support for '--changelog', '--pre-install-readme',
  '--post-install-readme', '--pre-uninstall-readme' and
  '--post-uninstall-readme' queries.

- The DSM parsing was fixed to allow multiple occurrences of the directives
  that should be multiply allowed, according to the DSM specification.

- '--long-info' and '--longinfo' will now list all information for a package.

- Added a check that 'binaries-dsm', 'sources-dsm' and 'documentation-dsm'
  do not have a file extension.

- Added support for the 'install-warning' directive, both in the install
  code and as a query type.

- Further interface tidy-ups - more usage of 'const'. Some header file
  fixes - path to libzippo headers, C++ inclusion protection.

- The version parsing function ver_parse() was split into two functions -
  ver_parse() and ver_get_and_parse() - for an interface similar to the DSMs'.

- The package type is now stored in the PACKAGE_VERSION structure.

- Removed very verbose, very quiet modes - they're redundant.

- '--syncdb' now searches the manifest directory for DSMs of packages that
  have been installed without zippo.

- Fixed Linux build.

- "--initdb --with-zippo" now installs a DSM for zippo too.

- Test suite now rebuilds tests automatically if lib/libzippo.a changes.

- Uninstall support

- Upgrade support added, but preliminary

0.1.2 patchlevel 3 2000-09-09
-----------------------------

Nothing important was done - this is a checkpoint release for importing into
CVS. zippo will now be hosted on DJ Delorie's CVS server (thanks!).

0.1.2 patchlevel 2 2000-08-23
-----------------------------

- Patch to fix build with libsocket 0.7.4 beta 4 and later
  (Laurynas Biveinis).

- DSM specification changed to allow pre-release number as part of
  the version specification. Added a test DSM - 'test/dsm/badver.dsm'.

- Install now uses dsm_get_and_parse(). To support this, more error reports
  were added to dsm_perror().

- Install will now search the package's directory for archives. This fixes
  the bug with installing from a directory that wasn't in the archive search
  path.

- The PMODE/DJ stub is not used by default now - use the '--with-pmode-stub'
  to build with it. Also, a bug from patchlevel 1 in the configure script was
  fixed, so the stub should be found properly now.

- Started zippo coding standards (see coding.txt).

0.1.2 patchlevel 1 2000-08-13
-----------------------------

- Makefile fixes: pl0 built a document by default - fixed to build by default
  again; documentation built a little better; use $(MAKE) instead of make.

- 'tags' target added for building Emacs tags file. 'ID' target added for
  building table for GNU id-utils. 'check' target added for running test
  suite.

- Switched to using calloc() instead of malloc() followed by bzero(); switched
  to using malloc() instead of bzero() (Laurynas Biveinis).

- 'config' script changes:
  . To build with MSS, you now need to pass '--with-mss' to the config script.
  . Now detects: more programs; file extensions; standard C headers.

- Fixed a bug in package_free(), where it attempted to free an array.

- '--install' now checks that all archives specified by a DSM exist, before
  creating the prefix. It also checks that the package is one of the currently
  supported types: binaries, sources, documentation, virtual.

- Moved DJGPP archive prefix information into new DJGPP shared data
  and functions files: src/libzippo/djgpp.c, include/libzippo/djgpp.h.

- Added '-L' and '--license' options to zippo and dsmcheck for displaying
  the license.

- 'make -C doc all' will build optional documentation formats - this now
  includes DVI and PostScript formats.

- Added a new function dsm_get_and_parse(); some new error codes were added
  to include/libzippo/dsm.h for this. (Laurynas Biveinis)

- Fixed a memory corruption bug in dsm_parse().

- Restructured the manifest parsing code - added the functions mft_get(),
  mft_get_from_archive(). As a result, some user-interface code was moved
  from src/libzippo/mft.c to src/query.c (i.e. out of libzippo):

  . mft_show_files() -> query_show_files()
  . mft_has_file() -> query_has_file()

  As a side-effect, the '-f' query now works for archives.

- dief(), warnf(), infof(), logf() now use gcc's printf-format checking
  for varargs.

0.1.2 patchlevel 0 2000-08-06
-----------------------------

- popt port removed, now that there's a proper DJGPP port.

- libzippo interfaces now use 'const' appropriately (Laurynas Biveinis).

- '--install' and '-qp' on a ZIP file that has no DSM file now produces
  a sensible message - try the test case test/zip/useless.zip.

- '--help' and '--version' now work when the database has not been
  initialised.

- dsmcheck now has '--help' and '--version' options. dsmcheck's texinfo
  documentation also started.

- 'distclean' now removes binaries from bin/.

- Texinfo documentation is now distributed under the terms of the GNU Free
  Documentation License (GNU FDL).

0.1.1 patchlevel 14 2000-06-15
------------------------------

- Option parsing now uses popt (Kalum Somaratna). A hacked-up port of popt
  is included, pending a proper port (Richard Dawe).

- Small fix for using MSS on read-only or full media, e.g. CD-ROMs. zippo will
  disable writing an MSS log file and will log to stdout instead.

0.1.1 patchlevel 13 2000-05-18
------------------------------

- MD5 hash generation is now done on install, in addition to syncdb.

0.1.1 patchlevel 12 2000-05-10
------------------------------

- Graph code (Laurynas Biveinis).

- Texinfo documentation for zippo now includes install instructions.

- 'install' target now installs zippo documentation into the 'DJGPP Package
  Management' category in the info directory (dir).

0.1.1 patchlevel 11 2000-05-06
------------------------------

- Dependency code changed to use generic dependency parsing function
  (Laurynas Biveinis, Richard Dawe) - now all DSM parsing functions take the
  directive as their first argument; browser function added to run a function
  on each package in a package list (useful in the future for checking
  dependencies).

- '--install' option now works, but '-qi' is broken. The option parsing code
  needs a little fixing.

- HTML documentation now built with texinfo 4.0's 'makeinfo --html' option.

- Some DSM bugfixes.

0.1.1 patchlevel 10 2000-05-02
------------------------------

- DSM specification is now at version 0.4.2 - thanks to Eli Zaretskii for
  his comments.

- The 'changelog', scripting and 'newsgroup-description' directives are now
  parsed. Note that these directives aren't actually supported in a useful
  way by zippo yet.

- Fix for building comptime.h when doing 'make dep' (Laurynas Biveinis).

- Windows NT 4 platform DSM now 'provides' Windows functionality, to support
  packages that require Windows.

0.1.1 patchlevel 9 2000-04-19
-----------------------------

- Added OS detection code for '--initdb', so the appropriate platform DSM
  can be installed automatically (Kalum Somaratna).

- Fix for getopt handling of '--with-platform' (Kalum Somaratna).

0.1.1 patchlevel 8 2000-04-16
-----------------------------

- '--syncdb' now updates DSMs for the installed packages in share/zippo/db,
  if a more recent DSM is found in share/zippo/db-avail.

- MD5 hashes are generated for all files listed in the manifest; MD5 hashes
  are not generated for none, group or virtual packages.

- DSM parser now skips whitespace lines, rather than considering them to be
  directives.

0.1.1 patchlevel 7 2000-04-13
-----------------------------

[ Not much changed - only a to-do added to todo.txt. ]

0.1.1 patchlevel 6 2000-04-10
-----------------------------

- Code previously used 'operator' as field in structures - switched to 'op'
  to avoid problems with C++ (Laurynas Biveinis).

- Many DSM corrections, new DSM provide: 'info-reader'. (Laurynas Biveinis)

- MD5 hash-generation code now works (test programs included).

- Logging code started.

- New platform DSMs written.

- Dependencies should now be generated properly for libzippo headers included
  using '<...>'.

0.1.1 patchlevel 5 2000-04-05
-----------------------------

[ This was not distributed, as far as I can tell. ]

- Added two group DSMs - one for former Borland C developers; one for GNU
  development tools (Laurynas Biveinis).

0.1.1 patchlevel 4 2000-04-04
-----------------------------

- DSMs improved (Laurynas Biveinis, a little by Richard Dawe); another test
  DSM added - test/dsm/baaad2.dsm.

- Fixes in the DSM parsing code - line-numbering was out by 1; lines with
  directive but no content were erroneously allowed. (Laurynas Biveinis)

- Documentation corrections (Laurynas Biveinis).

- Base64 encoding code started (untested).

0.1.1 patchlevel 3 2000-04-02
-----------------------------

- Fix for comptime.h generation (Laurynas Biveinis).

- 'install-lib' Makefile target added (Laurynas Biveinis).

- MD5 hash-generation code added to build.

- Some texinfo fixes.

- More DSMs added.

0.1.1 patchlevel 2 2000-03-27
-----------------------------

- zippo texinfo documentation started.

- Improved option parsing using getopt() (Kalum Somaratna).

- 'string.h' now included in files generated by mkplat. Its omission was
   a bug that manifested itself when not using MSS, because the MSS headers
   include 'string.h'.

- Some automatically generated files removed from the build.

- Added new levels of output - quiet & very quiet. WARNING: The varying levels
  of verbosity are not well supported yet.

0.1.1 patchlevel 1 2000-02-19
-----------------------------

- Patched a couple of routines to avoid calling free() on NULL pointers -
  patch by Laurynas Biveinis.

- Updated the required package list, as I had omitted some and not known about
  others.

- Changed libzippo's licence to be licensed under the terms of the GNU Lesser
  General Public License. This is so that libzippo can be incorporated into
  non-GPL programs.

- Fixed the '--syncdb' option. Previously it would fail if no DSMs existed
  in the package database - for a system that only has manifests for packages,
  this was broken behaviour.

- Some tidy-ups - removed CVS copies of the files share/zippo/zipporc,
  share/zippo/simtelrc - the "real" copies of these are in src/defaults.

- Added an install option to the Makefile.

- Fixed small bug in output of '-q -a -f <file>'.

0.1.1 2000-02-09
----------------

- Fixed a bug in the patch to recursive_mkdir() that lead to SIGSEGV's on
  Linux.

- Fixed dsm_parse() not to trash the passed buffer. This fixed a problem
  noticed by Laurynas Bivenis, while using the install option.

- Added check for presence of zlib, thanks to suggestion by Laurynas Biveinis.

- Added '--syncdb' option to create missing DSMs in the installed database
  from the list of manifest files using the available DSM database.

- Added new directives to the DSM specification:
. mailing-list-request
. dsm-author
. dsm-author-email
. dsm-author-im
. dsm-author-web-site
. dsm-author-ftp-site
. dsm-file-version
. newsgroup-email-gateway
. license

- All ICQ directives have been changed to a more generic instant messaging
  directive.  All '-icq' directives -> '-im'.

- Fixed a bug in '--initdb' that copied 'zippo' rather than 'zippo.exe' under
  DOS.

(There's probably a whole load of other stuff I forgot in the two months
 before I got round to releasing this version.)

0.1 snapshot 1999-08-07 patch 1999-08-14
----------------------------------------

- Fixed a bug in recursive_mkdir() that made it fail on DOS platforms. Thanks
  to Laurynas Biveinis for fixing this.

- Fixed configure.in and Makefile.in to find gcc automatically. Thanks to
  Laurynas Biveinis for fixing this.

0.1 snapshot 1999-08-07
-----------------------

- long-description is now parsed by dsm_parse().

- Rewrote dsm_parse() - this now parses a DSM passed as a string. The code
  using dsm_parse() was changed to load DSMs into memory first (see
  read_text_file_to_memory() in util.c and archive_extract_file_to_memory()
  in archive.c). The DSM parser also returns an error if an unknown DSM is
  directive is present.

- Multiple 'zip' or 'tar-gzip' directives are now parsed. Previously only
  one occurence was handled.

- The build process is now completely controlled by the configure script.
  Use 'bash configure --help' to view all the '--enable-xxx' options.

- Included the package versions in the output of the '-a' and '-A' options.

- Fixed a couple of DSM parsing bugs.

- Made sensible default values for the root and prefix, namely c:/djgpp. If
  no prefix is specified, the value of the root will be used. The compiled-in
  defaults can be viewed using the '-V' option.

- Added support for platform information as part of the version information.

- Added a platform specifier to the version information.

0.1 snapshot 1999-07-17
------------------------

- Fixed bug in dsm_load_all() which caused a segfault on closedir() on a NULL
  pointer.

- MSS helped find a bug in rcfile_substitute_special().

- Added configure auto-detection of MSS, a memory allocation debugger. BTW
  this works with DJGPP & Linux.

- Fixed a couple of bugs in the DSM version parsing.

- Added a new DSM version field 'snapshot' for date-based releases at the
  request of Laurynas Biveinis. The versions of zippo are now snapshots rather
  than alphas ;)

- Updated the install instructions, with a more complete list of required
  packages to build zippo.

- Added a sample DSM for libsocket in share/zippo/db-avail/

0.1 alpha 2
-----------

- Began install option support, but so far it only checks the dependencies.

- Version numbers for manifests obtained from .ver files. The package type is
  also guessed from the last letter, e.g. one of b, s, d, and defaults to
  none/unknown.

- Fixed autoconf script for strlwr() and stricmp(). It should now compile
  properly with DJGPP.

- Added parsing of dependencies & querying of them.

- Added support for reading of DSMs and manifests from ZIP files -
  manifest/<name>.dsm or <name>.dsm and manifest/<name>.mft and <name>.mft
  names are matched in the ZIP. The directory and extension names are matched
  case insensitively.

- Default query format is now to display package name, version & type.

0.1 alpha 1
-----------

- Initial version.

Richard Dawe <rich@phekda.freeserve.co.uk> 2001-07-01

Graphics generously designed & Copyright (C) 2000, 2001 by Krogg.
