2011-11-15  Ludovic Courtès  <ludo@gnu.org>

	Update `NEWS'.

	block-indexer-chk: Fix off-by-n in ASCII deserialization of the block indexer.
	* src/block-indexer-chk.c (cbi_deserialize): New variable `start'.  Use
	  it to avoid reading past the end of BUFFER when reading
	  BLOCK_ID_HASH_NAME.

	* tests/interfaces/deserialize.c (ascii_serials): Add a
	  `chk_block_indexer' example.

	block-indexer-chk: Add an ASCII serializer.
	* src/block-indexer-chk.c (cbi_serialize): Implement an ASCII
	  serializer.

	tests: Compared all the files restored in `backup'.
	* tests/utils/backup: Use `find' to compare all the files that were
	  restored.

	tests: Make sure `chop-backup' uses modules from the build tree.
	* tests/Makefile.am (TESTS_ENVIRONMENT): Define $GUILE so that
	  $(top_srcdir)/guile2 appears before $guilemoduledir in the search
	  path.

	chop-backup: Default to the tuple of the most recent backup available.
	* utils/chop-backup.in (most-recent-backup-tuple): Add a `store'
	  parameter.  Update callers.
	  (main)[show]: Replace `store-file' parameter by `store'.

	* doc/libchop.texi (Invoking chop-backup): Update description of what
	  happens when the tuple is omitted.

	* NEWS: Update.

	doc: Roughly document `chop-show-similarities' and `chop-show-anchors'.
	* doc/libchop.texi (Invoking chop-show-similarities, Invoking
	  chop-show-anchors): New nodes.
	  (Stream Choppers): Refer to them.

	doc: Write the "Stream Choppers" section.
	* doc/libchop.texi (Stream Choppers): Write this section.

	chop-show-similarities: Add `--blocks'.
	* utils/chop-show-similarities.c (magic_fpr_mask_set, blocks_per_file):
	  New variables.
	  (options)["--blocks"]: New option.
	  (fingerprint_mask_for_size, choose_magic_fingerprint_mask): New
	  functions.
	  (parse_opt): Handle `-b'.  Set `magic_fpr_mask_set' for `-f'.
	  (main): Call `choose_magic_fingerprint_mask' when MAGIC_FPR_MASK_SET
	  if false.

2011-11-14  Ludovic Courtès  <ludo@gnu.org>

	Update `THANKS'.

	tests: Export $XDG_CACHE_HOME in `utils/backup'.
	* tests/utils/backup (XDG_CACHE_HOME): Export.

	block-indexer-hash: Fix off-by-n in ASCII deserialization of the block indexer.
	* src/block-indexer-hash.c (hbi_deserialize): Don't read beyond SIZE.

	* tests/interfaces/deserialize.c (ascii_serials): Add a
	  `hash_block_indexer' example.

	tests: Simplify `deserialize.c'.
	* tests/interfaces/deserialize.c (pair)[serial_size]: Remove field.
	  (ascii_serials): Adjust accordingly.
	  (check_serial_deserial): Use `strlen (pair->serial)' instead of
	  `pair->serial_size'.

2011-11-05  Ludovic Courtès  <ludo@gnu.org>

	store-fs: Save `ftruncate' call in `write_block' in some cases.
	* src/store-fs.c (chop_fs_write_block): Save `mkdirat()' ERRNO in
	  `saved_errno'.  Avoid `ftruncate' call when SAVED_ERRNO is no EEXIST.

	chop-backup: Optimize `indexed-block-exists?'.
	* utils/chop-backup.in (indexed-block-exists?): Use
	  `block-fetcher-exists?'.

	Define $GUILE_LOAD_COMPILED_PATH when running tests.
	* tests/Makefile.am (TESTS_ENVIRONMENT): Define
	  $GUILE_LOAD_COMPILED_PATH.

2011-11-04  Ludovic Courtès  <ludo@gnu.org>

	guile2: Add `block-fetcher-exists?'.
	* guile2/chop/block-indexers.scm (block-fetcher-exists?): New procedure.

	* guile2/chop/internal.scm (sizeof-size_t): Define using
	  `define-compile-time-value'.
	  (sizeof-int): New macro.
	  (make-int-pointer, dereference-int): New procedures.

	* guile2/test-suite.scm ("block-fetcher-exists?",
	  "!block-fetcher-exists?"): New tests.

	block-indexers: Implement the `block_exists' method.
	* src/block-indexer-chk.c (cbf_ctor): Set `block_exists'.
	  (chk_block_exists): New function.

	* src/block-indexer-hash.c (hbf_ctor): Set `block_exists'.
	  (hash_block_exists): New function.

	* src/block-indexer-integer.c (ibf_ctor): Set `block_exists'.
	  (integer_block_exists): New function.

	* src/block-indexer-uuid.c (ubf_ctor): Set `block_exists'.
	  (uuid_block_exists): New function.

	block-indexer-uuid: Fix set-but-unused warnings.
	* src/block-indexer-uuid.c (ubf_deserialize): Return ERR.
	  (uuid_block_fetch): Remove `fetcher'.
	  (uuid_block_index): Remove `uuid_indexer'.

	block-indexers: Add a `block_exists' method.
	* include/chop/block-indexers.h (chop_block_fetcher_t)[block_exists]:
	  New method.
	  (chop_block_fetcher_exists): New function.

	* src/block-indexer-chk.c (cbf_ctor): Initialize `block_exists'.
	* src/block-indexer-hash.c (hbf_ctor, hbf_dtor): Likewise.
	* src/block-indexer-integer.c (ibf_ctor, ibf_dtor): Likewise.
	* src/block-indexer-uuid.c (ubf_ctor, ubf_dtor): Likewise.

	* tests/interfaces/block-indexers.c (main): Re-open and close STORE at
	  each iteration.  Check `chop_block_fetcher_exists' both when the block
	  exists and when it doesn't.

	Fix warnings in the `deserialize.c' test.
	* tests/interfaces/deserialize.c (check_serial_deserial): Return `void'.
	  (main): Remove `index'.

2011-11-01  Ludovic Courtès  <ludo@gnu.org>

	chop-backup: Fix file descriptor leak in `--backup'.
	* utils/chop-backup.in (filtered-stream): Add optional CLOSE-BACKEND?
	  parameter; pass it to `filtered-stream-open'.
	  (run-storage-pipeline): Pass `filtered-stream' #t as the
	  CLOSE-BACKEND? argument when we opened STREAM ourselves.  Close
	  STREAM when we opened it.

	* NEWS: Update.

2011-10-30  Ludovic Courtès  <ludo@gnu.org>

	Update `NEWS'.

	chop-backup: Add `--probe' option.
	* utils/chop-backup.in (indexed-block-exists?): New procedure.
	  (run-storage-pipeline/recursive)[tip-exists?]: Use it.
	  (show-help): Update.
	  (%options)["--probe"]: New option.
	  (main): Implement it.

	* doc/libchop.texi (Invoking chop-backup): Document `--probe'.

	chop-backup: Keep several tuples per directory in `recent-backups'.
	* utils/chop-backup.in (%max-recent-backup-tuples): New variable.
	  (save-backup-tuple)[strip]: New procedure.  Keep several tuples per
	  directory.
	  (recent-backups): Adjust docstring accordingly.
	  (most-recent-backup-tuple): Adjust.
	  (main)[list-recent]: Adjust.

2011-10-10  Ludovic Courtès  <ludo@gnu.org>

	chop-backup: Fix typo in error handling routine.
	* utils/chop-backup.in (main): Rename `_' to `rest' to avoid shadowing
	  gettext.

2011-10-09  Ludovic Courtès  <ludo@gnu.org>

	chop-backup: Display dates smartly in `--list'.
	* utils/chop-backup.in (list-directory-contents)[->date]: Choose the
	  date format as a function of the time difference between now and then,
	  à la GNU ls -l.

	chop-backup: Fix typo.
	* utils/chop-backup.in (main)[parse-args]: Fix typo in "unrecognized
	  option" error.

2011-10-08  Ludovic Courtès  <ludo@gnu.org>

	doc: Adjust the title.
	* doc/libchop.texi: Adjust title.

	web: Update intro.

	doc: Typo.
	* doc/libchop.texi (Invoking chop-backup): Fix typo.

	Make `distcheck' happy.
	* tests/utils/backup (chop_CLEANUP_HOOK): rm -rf $DB_FILE.
	  (chop_CLEANFILES): Remove.

	Disable Automake's `std-options'.
	* configure.ac: Remove `std-options' from `AM_INIT_AUTOMAKE'.

	Change `tests/utils/backup' to work with read-only directories.
	* tests/utils/backup: Be prepared to deal with the restoration read-only
	  directories.

	chop-backup: Allow restoration of non-writable directories.
	* utils/chop-backup.in (restore-tree): Make SUBDIR writeable before
	  recursing and restore PERMS only after.

	Update Gnulib to v0.0-6392-g4f11d6b.

	Tweak `.gitignore'.

	Update `NEWS'.

	Rename `guile' to `guile-1.8'.

2011-10-07  Ludovic Courtès  <ludo@gnu.org>

	configure: Use `AM_GNU_GETTEXT_VERSION'.
	* configure.ac: Use `AM_GNU_GETTEXT_VERSION'.

	Gut the G-Wrap-based Guile 1.8 bindings.
	* Makefile.am (SUBDIRS): Remove `guile'.

	* configure.ac: Remove `--enable-guile-1.8-bindings'; remove checks for
	  Guile 1.8 and G-Wrap.  Don't output files under guile/.  Remove
	  `pre-inst-guile-exec' command.

	Update `README'.
	* README: Mention Guile 2.0.

	doc: Rework intro and `chop-archiver' doc.
	* doc/libchop.texi (Introduction): Rework to distinguish the utilities
	  from the library, and to link to `chop-backup'.
	  (Use Cases): Likewise.  Use `chop-backup' instead of `chop-archiver'
	  in the example.
	  (Invoking chop-archiver): Explain difference from `chop-backup'.

	doc: Augment `chop-backup' node.
	* doc/libchop.texi (Invoking chop-backup): Augment intro; add option
	  reference.

	doc: Move "Utilities" before "API Reference".
	* doc/libchop.texi (Utilities): Move before "API Reference".

	doc: Demote the "Object System" node.
	* doc/libchop.texi (Object System): Move under "API Reference".

	doc: Meta-improvements.
	* doc/libchop.texi: Update copyright years.  Add a direntry for
	  `chop-backup'.  Improve the title page.

2011-10-06  Ludovic Courtès  <ludo@gnu.org>

	doc: First stab at documenting `chop-backup'.
	* doc/libchop.texi (Utilities): Rephrase to introduce `chop-backup'.
	  (Invoking chop-backup): New node.

	chop-backup: Internationalize.
	* utils/chop-backup.in (_, N_): New procedures.
	  Internationalize all the relevant messages.

	Gettextize.
	* Makefile.am (SUBDIRS): Add `po'.
	* configure.ac: Use `AM_GNU_GETTEXT'.
	* po: New directory.

	* tests/utils/lib.sh: Set $LANG to "C".

	chop-backup: Add `--recent'.
	* utils/chop-backup.in (recent-backups): New procedure.
	  (most-recent-backup-tuple): Use it.
	  (show-help): Add `--recent'.
	  (%options): Likewise.
	  (main): Handle it.

2011-10-05  Ludovic Courtès  <ludo@gnu.org>

	chop-backup: Comment.
	* utils/chop-backup.in (run-storage-pipeline/recursive)[tip-exists?]:
	  Add comment on optimization.

	chop-backup: Augment the default "worthless file" list.
	* utils/chop-backup.in (worthless-file?): Augment RX and DIRS.

	chop-backup: Choose the storage pipeline based on the file extension.
	* utils/chop-backup.in (%compressed-data-storage-pipeline): New
	  variable.
	  (file-extension, most-suitable-pipeline): New procedures.
	  (run-storage-pipeline/recursive): Change the `pipeline' parameter to
	  `choose-pipeline', a procedure.
	  (main): Call `run-storage-pipeline/recursive' with
	  `most-suitable-pipeline' as the first argument.

	chop-backup: Adjust the default storage pipelines.
	* utils/chop-backup.in (%default-storage-pipeline): Use lightweight
	  input stream compression, 16 KiB blocks, and SHA1 instead of MD5 for
	  block IDs.
	  (%text-storage-pipeline): Get rid of block-level compression since
	  it's pointless on encrypted input.

	filter-lzo-unzip: Fix possible infinite loop.
	* src/filter-lzo-unzip.c (ENSURE_LARGE_ENOUGH_BUFFER): Fix enlarging
	  condition to match the correct one, used below in `while'.  This could
	  lead to an input buffer a few bytes too small, such that the
	  `chop_filter_handle_input_fault' below would call `push' with HOW_MUCH
	  slightly larger than the actual input buffer size, which would make it
	  enter an infinite loop.

2011-10-03  Ludovic Courtès  <ludo@gnu.org>

	chop-backup: Suitably handle zip stream filters.
	* utils/chop-backup.in (pipeline-index-handle->tuple): Special-case
	  stream filters.

	Add `utils/backup' test.
	* tests/Makefile.am (check_SCRIPTS)[HAVE_GUILE2]: Add `utils/backup'.
	* tests/utils/backup: New file.

2011-10-02  Ludovic Courtès  <ludo@gnu.org>

	block-indexer-hash: Fix off-by-n in ASCII deserialization of handles.
	This is a followup to 92883a6457e4a5386eaa1ce34951d9bbbf05dd8b.

	* src/block-indexer-hash.c (hih_deserialize)[CHOP_SERIAL_ASCII]: Copy
	  BUFFER to a local zero-terminated buffer; this fixes a bug whereby it
	  would deserialize beyond SIZE.  Use `strtoul' instead of `strtol'.

	* tests/interfaces/deserialize.c (ascii_serials): Add hih instance.

	chop-backup: Add support for `--check'.
	* utils/chop-backup.in (index-tuple->verifier, verify-tree): New
	  procedures.
	  (show-help): Add `--check'.
	  (%options): Likewise.
	  (main): Add support for the `verify' operation.

2011-09-30  Ludovic Courtès  <ludo@gnu.org>

	chop-backup: Add history browsing support to `--list'.
	* utils/chop-backup.in (list-directory-contents): Add `history?'
	  argument.
	  [make-previous-version-entry]: New procedure.
	  Display previous-version entries, recursing into it when HISTORY? is
	  true; mark visited directories to avoid revisiting them.

	chop-backup: Change `--list' to display previous-version pointers.
	* utils/chop-backup.in (list-directory-contents)[display-entry,
	  tuple->directory, make-previous-version-entry]: New procedures.
	  Use them.  Show a previous-version entry for directory with a
	  previous-version pointer.

	chop-backup: Record the previous version of a directory.
	* utils/chop-backup.in
	  (run-storage-pipeline/recursive)[stat->cached-entry]: New procedure.
	  [stat->index-tuple]: Use it.
	  [store-directory*]: Get the previous-version pointer using
	  `stat->cached-entry'.

2011-09-28  Ludovic Courtès  <ludo@gnu.org>

	Add `chop-backup' to the distribution and install it.
	* utils/chop-backup: Rename to...
	* utils/chop-backup.in: ... this.  Add version check.

	* utils/Makefile.am (bin_SCRIPTS)[HAVE_GUILE2]: Add `chop-backup'.
	  (EXTRA_DIST): Add `chop-backup.in'.

	* configure.ac: Output `utils/chop-backup'; add `chop-backup-exec'
	  command.

	chop-backup: Use the most recent backup tuple by default.
	* utils/chop-backup (most-recent-backup-tuple): New procedure.
	  (main)[show]: Expect TUPLE to be a tuple, not a string; update caller.
	  Change the `list', `show', and `restore' actions to use the most
	  recent backup tuple when no tuple is specified.

	chop-backup: Cache a list of recent file/tuple pairs.
	* utils/chop-backup (%recent-backups-file): New variable.
	  (save-backup-tuple): New file.
	  (main): When doing a backup, call `save-backup-tuple' for each new
	  file.

	chop-backup: Decouple the external/internal representations of directories.
	* utils/chop-backup (<directory>, <directory-entry>): New record types.
	  (directory->sexp, write-directory, sexp->directory, read-directory):
	  New procedures.
	  (store-directory): Expect a directory object instead of a list of
	  name/kind/mtime/... tuples.  Use `write-directory' instead of rolling
	  our own.
	  (run-storage-pipeline/recursive): Adjust accordingly; rename
	  `file+index' variables to `entries'.
	  (list-directory-contents): Likewise.
	  (restore-tree): Likewise.
	  (main): Likewise.

	Augment `TODO'.

2011-09-17  Ludovic Courtès  <ludo@gnu.org>

	Do without `-Wdeclaration-after-statement'.
	* configure.ac (GCC_CFLAGS): Remove `-Wdeclaration-after-statement'.

	block-indexer-chk: Fix off-by-n in ASCII deserialization of handles.
	* src/block-indexer-chk.c (chk_deserialize)[CHOP_SERIAL_ASCII]: Copy
	  BUFFER to a local zero-terminated buffer; this fixes a bug whereby it
	  would deserialize beyond SIZE.  Use `strtoul' instead of `strtol'.

	* tests/Makefile.am (check_PROGRAMS): Add `interfaces/deserialize'.

	* tests/interfaces/deserialize.c: New file.

2011-09-16  Ludovic Courtès  <ludo@gnu.org>

	block-indexer-chk: Use the fetcher error code when fetching.
	* src/block-indexer-chk.c (chk_block_fetch): Use
	  `CHOP_BLOCK_FETCHER_ERROR', not `CHOP_BLOCK_INDEXER_ERROR'.

	chop-backup: Save and restore permission bits.
	* utils/chop-backup (store-directory): Expect FILE+INDEX to contain
	  permission bits.
	  (run-storage-pipeline/recursive)[process-file, leave-directory]: Add
	  permission bits to the result.
	  Adjust the rest accordingly.
	  (list-directory-contents)[->perms]: New procedure.  Use it.
	  (restore-tree): Adjust accordingly, and restore permission bits.
	  (main)[backup]: Adjust accordingly.

	chop-backup: Add `--restore'.
	* utils/chop-backup (restore-tree): New procedure.
	  (show-help): Update.
	  (%options)["restore"]: New option.
	  (main): Handle `--restore'.

	chop-backup: Have `run-storage-pipeline/recursive' handle symlinks.
	* utils/chop-backup (warn): New macro.
	  (run-storage-pipeline/recursive)[store/cache]: Handle symlinks.

	chop-backup: Add `--show'.
	* utils/chop-backup (dump-port): New procedure.
	  (show-help): Update.
	  (%options)["show"]: New option.
	  (main)[show]: New procedure.
	  Handle the `show' action.

	chop-backup: Add `--backup'.
	* utils/chop-backup (show-help): Update.
	  (%options)["backup"]: New option.

	chop-backup: Add `--list' option and retrieval support.
	* utils/chop-backup (filtered-stream, filtered-store,
	  dual-filter-class): New procedures.
	  (run-storage-pipeline): Use `filtered-stream' and `filtered-store'.
	  (string->index-tuple): Remove.
	  (index-tuple->retriever, list-directory-contents): New procedures.
	  (show-help, show-version): New procedures.
	  (%options, %default-options): New variables.
	  (main)[parse-args, open-store, backup]: New procedures.
	  Install the current locale.  Parse arguments, and dispatch to the
	  right action.

	guile2: Add `libchop-bug-address'.
	* guile2/Makefile.am (.in.scm): Substitute `@PACKAGE_BUGREPORT@'.
	* guile2/chop/config.in (%libchop-bug-address): New variable.
	* guile2/chop/core.scm (libchop-bug-address): New procedure.

2011-09-15  Ludovic Courtès  <ludo@gnu.org>

	guile2: Have `stream->port' let exceptions through.
	* guile2/chop/streams.scm (false-if-end-of-stream): New macro.
	  (stream->port): Use it instead of `false-if-exception'.

	* guile2/test-suite.scm ("streams")["mem-stream"]: Use it.
	  ("filters")["stream->port error reported"]: New test.

2011-07-28  Ludovic Courtès  <ludo@gnu.org>

	Augment `TODO'.

	chop-backup: Remove dead code in `run-storage-pipeline/recursive'.
	* utils/chop-backup (run-storage-pipeline/recursive)[skip-directory]:
	  Adjust according to previous `enter-directory?' change.

2011-07-26  Ludovic Courtès  <ludo@gnu.org>

	chop-backup: Enter a directory even if its mtime hasn't changed.
	* utils/chop-backup (run-storage-pipeline/recursive)[enter-directory?]:
	  Always enter DIR-NAME if it passes `worthless-file?'.

2011-07-24  Ludovic Courtès  <ludo@gnu.org>

	Update `TODO'.

	Add `chop-backup', a whole-tree directory backup application.
	* utils/chop-backup: New file.

2011-07-23  Ludovic Courtès  <ludo@gnu.org>

	chop-archiver: Have `-z' affect meta-data as well when `-f' is passed.
	* utils/chop-archiver.c (main): When STORE and METASTORE are the same
	  and ZIP_BLOCK_FILTER_CLASS is non-NULL, apply zip/unzip filters to
	  both STORE and METASTORE.

	Change the zip filter tests to test for both small and large inputs.
	* tests/features/filter-zip.c (handle_random_input_fault): Get the input
	  size from DATA instead of using `SIZE_OF_INPUT'.
	  (main)[input_sizes, input_size]: New variables.  Iterate over all the
	  INPUT_SIZES.

	* tests/features/stream-filtered.c (main)[input_sizes, input_size]: New
	  variables.  Iterate over all the INPUT_SIZES.

	chop-store-list: Gracefully diagnose lack of sequential access support.
	* utils/chop-store-list.c (main): Gracefully handle DB_STORE_CLASS
	  without sequential access support.

2011-07-18  Ludovic Courtès  <ludo@gnu.org>

	guile2: Add `make-zip-filter' and `make-unzip-filter'.
	* guile2/chop/filters.scm (%default-compression-level): New variable.
	  (make-zip-filter, make-unzip-filter): New procedures.

	* guile2/test-suite.scm ("filters")["make-zip-filter",
	  "make-unzip-filter"]: New tests.

2011-07-11  Ludovic Courtès  <ludo@gnu.org>

	guile2: Fix typo.
	* guile2/chop/internal.scm: Remove extraneous `v'.

	store-fs: Fix return value of `read_block' for non-existent blocks.
	* src/store-fs.c (chop_fs_read_block): When `openat' fails, set ERR to
	  `CHOP_STORE_BLOCK_UNAVAIL' when ERRNO is ENOENT.

	* tests/interfaces/stores.c (main): Add test for `block_exists' and
	  `read_block' with non-existent blocks.

	* NEWS: Update.

	store-fs: Fix off-by-one when converting key to file name.
	* src/store-fs.c (block_file_name): Leave space for the trailing \0.
	  (chop_fs_block_exists, chop_fs_read_block, chop_fs_write_block,
	  chop_fs_delete_block): Change FILE_NAME to be twice the size of KEY
	  plus 2 bytes, for the slash and trailing zero.

2011-04-07  Ludovic Courtès  <ludo@gnu.org>

	Placate `make distcleancheck'.
	* guile2/Makefile.am (CLEANFILES): Add *.log.

	* tests/utils/archiver-fd: Invoke `chop_cleanup'.

	guile2: Add missing exports from (chop stores).
	* guile2/chop/stores.scm: Export `error/store-block-unavailable',
	  `error/store-error', and `error/store-end'.

	guile2: Make the `chop' directory; add `test-suite.scm' to the distro.
	* guile2/Makefile.am (.in.scm): mkdir `chop'.
	  (EXTRA_DIST): Add `test-suite.scm'.

	Build Gnulib without GCC warnings.
	* configure.ac: Add warnings to $GCC_CFLAGS instead of $CFLAGS;
	  substitute it.

	* src/Makefile.am (AM_CFLAGS): Use $(GCC_CFLAGS).
	  (libchop_la_CFLAGS, libchop_block_server_la_CFLAGS,
	  libchop_store_browsers_la_CFLAGS): Use it.

	* tests/Makefile.am (AM_CFLAGS): New variable.

	* utils/Makefile.am (AM_CFLAGS): New variable.
	  (chop_openpgp_tool_CFLAGS): Use it.

	configure: Rename `--enable-guile-bindings' to `--enable-guile-1.8-bindings'.
	* configure.ac: Rename `--enable-guile-bindings' to
	  `--enable-guile-1.8-bindings'.

	guile2: Add sources files to the distribution.
	* guile2/Makefile.am (nobase_guilemodule_DATA): Rename to...
	  (nobase_dist_guilemodule_DATA): ... this.

	Placate `-Wunused-but-set-variable' from GCC 4.6.
	* src/block-indexer-integer.c (ibf_deserialize): Remove `err'; return
	  the error code from `chop_object_initialize'.
	  (integer_block_fetch): Remove `fetcher'.

	* src/chopper-anchor-based.c (sliding_window_append_to_buffer): Remove
	  `amount' and `available'.

	* src/indexer-tree.c (iht_serialize): Return ERR.

	* src/store-sunrpc.c (get_host_inet_address): Remove `addr_len'.

	* utils/chop-block-server.c (listen_there): Likewise.
	  (display_request_info): Remove `inline' keyword.
	  (main): Remove `transp'.

	* src/indexers.c (chop_ascii_serialize_index_tuple): Remove
	  `block_indexer_class'.

	Don't build with `-Winline'.
	* configure.ac (CFLAGS): Remove `-Winline'.

	Gnulib: Use `malloc-gnu' instead of `malloc'.
	* m4/gnulib-cache.m4: Use `malloc-gnu' instead of `malloc', as
	  recommended in v0.0-5070-gbd5d1e6.

	Update `NEWS'.

2011-04-06  Ludovic Courtès  <ludo@gnu.org>

	doc: Slightly improve "Guile Bindings".
	* doc/libchop.texi (Guile Bindings): Untabify examples.  Fix cross-ref.
	  Mention docstrings.

2011-04-05  Ludovic Courtès  <ludo@gnu.org>

	doc: Populate the "Guile Bindings" section with an example.
	* doc/libchop.texi (Guile Bindings): Add a quick start guide.

	Augment TODO.

	guile2: Add (chop filters).
	* guile2/Makefile.am (SOURCES): Add `chop/filters.scm'.

	* guile2/chop.scm (%public-modules): Add `filters'.

	* guile2/chop/core.scm (error/filter-full, error/filter-empty,
	  error/filter-unhandled-fault, error/filter-error): Move to
	  `filters.scm'.

	* guile2/chop/filters.scm: New file.

	* guile2/chop/stores.scm (%filter-class): New variable.
	  (filtered-block-store-open): New procedures.

	* guile2/chop/streams.scm (filtered-stream-open): New procedure.

	* guile2/test-suite.scm ("filters"): New set of tests.

	guile2: Add index tuple serialization/deserialization.
	* guile2/chop/indexers.scm (%class, %indexer-class): New variables.
	  (serialize-index-tuple/ascii, deserialize-index-tuple/ascii): New
	  procedures.

	* guile2/chop/internal.scm (make-pointer-pointer): New procedure.

	* guile2/test-suite.scm ("indexer-{index-blocks,fetch-stream} with
	  serialized index tuple"): New test.

2011-03-31  Ludovic Courtès  <ludo@gnu.org>

	guile2: Move error codes to the module where they belong.
	* guile2/chop/block-indexers.scm (error/block-indexer-error,
	  error/block-fetcher-error): New variables.

	* guile2/chop/cipher.scm (error/cipher-error, error/cipher-weak-key):
	  New variables.

	* guile2/chop/core.scm (error/deserial-too-short,
	  error/deserial-corrupt-input): Remove.

	* guile2/chop/indexers.scm (error/indexer-error,
	  error/indexer-empty-source): New variables.

	* guile2/chop/objects.scm (error/deserial-too-short,
	  error/deserial-corrupt-input): New variables.

	* guile2/chop/stores.scm (error/unknown-store): New variable.

	guile2: Add (chop).
	* guile2/chop.scm: New file.
	* guile2/Makefile.am (SOURCES): Add `chop.scm'.

2011-03-28  Ludovic Courtès  <ludo@gnu.org>

	Choose a better default for `guilemoduledir'.
	* configure.ac: Have guilemoduledir default to
	  "$datarootdir/guile/site/2.0".

	guile2: Install `.go' files after `.scm' files.
	* guile2/Makefile.am (chop_install_go_files): New variable, and new
	  rule.

	guile2: Add (chop config).
	* guile2/Makefile.am (BUILT_SOURCES): New variable.
	  (CLEANFILES): Add $(BUILT_SOURCES).
	  (EXTRA_DIST): Add `chop/config.in'.
	  (.in.scm): New rule.
	  (GOBJECTS): Use $(BUILT_SOURCES) too.

	* guile2/chop/config.in: New file.

	* guile2/chop/core.scm (libchop-version): New procedure.

	* guile2/chop/internal.scm: Use (chop config).
	  (%libchop-libdir): Remove.
	  (%libchop-cppflags): Use %libchop-includedir.

2011-03-27  Ludovic Courtès  <ludo@gnu.org>

	guile2: Add (chop indexers).
	* guile2/Makefile.am (SOURCES): Add `chop/indexers.scm'.

	* guile2/chop/indexers.scm: New file.

	* guile2/test-suite.scm ("indexers"): New test series.

	guile2: Hide end-of-stream exceptions in `stream->port'.
	* guile2/chop/streams.scm (stream->port)[read!]: Return 0 when
	  `stream-read!' raises an exception.

	* guile2/test-suite.scm ("stream->port & get-bytevector-all"): New test.

	guile2: Add block fetchers.
	* guile2/chop/block-indexers.scm (block-fetcher): New wrapped type.
	  (block-indexer-fetcher, block-fetcher-fetch): New procedures.

	* guile2/test-suite.scm ("block-indexer-fetcher",
	  "block-fetcher-fetch"): New tests.

	guile2: Change serialization/deserialization to use `libchop-method'.
	* guile2/chop/internal.scm (sizeof-size_t): New variable.
	  (make-size_t-pointer, dereference-size_t): New procedures.

	* guile2/chop/objects.scm (%deserialize-object): Use `libchop-method',
	  `make-size_t-pointer', and `dereference-size_t'.
	  (%serialize-object): Use `libchop-method'.

	guile2: Have `libchop-method' check for null method pointers.
	* guile2/chop/core.scm (error/not-impl): Move to...
	* guile2/chop/internal.scm (error/not-impl): ... here.
	  (libchop-method): Raise an error when the method pointer is null.

2011-03-26  Ludovic Courtès  <ludo@gnu.org>

	guile2: Add object equality, serialization, and deserialization.
	* guile2/chop/internal.scm: Export `gc-malloc-pointerless'.

	* guile2/chop/objects.scm (object=?): New procedure.
	  (%ascii, %binary): New variables.
	  (%serialize-object, serialize-object/ascii, serialize-object/binary,
	  %deserialize-object, deserialize-object/ascii,
	  deserialize-object/binary): New procedures.

	* guile2/test-suite.scm ("index-handle equality", "block-indexer ASCII
	  serialization", "block-indexer ASCII deserialization", "index-handle
	  serialization", "index-handle deserialization"): New tests.

	guile2: Factorize `with-temporary-file' in the test suite.
	* guile2/test-suite.scm (with-temporary-file): New procedure.
	  ("gdbm"): Use it.

2011-03-24  Ludovic Courtès  <ludo@gnu.org>

	guile2: Fix size of memory allocate in `dummy*-block-store-open'.
	* guile2/chop/stores.scm (dummy-block-store-open,
	  dummy-proxy-block-store-open): Use "dummy_block_store", not
	  "block_store".

	guile2: Fix size of memory allocation in `file-based-block-store-open'.
	* guile2/chop/stores.scm (file-based-block-store-open): Allocate enough
	  room for CLASS instead of using `libchop-type-constructor' for
	  "block_store".

	guile2: Register objects returned by `chopper-generic-open'.
	* guile2/chop/choppers.scm (chopper-generic-open): Use
	  `register-libchop-object!'.

	guile2: Add `block-indexer-index'.
	* guile2/chop/block-indexers.scm (index-handle): New type.
	  (%store-class): New variable.
	  (block-indexer-index): New procedure.

	* guile2/test-suite.scm ("block-indexer-index"): New test.

2011-03-23  Ludovic Courtès  <ludo@gnu.org>

	guile2: Have `wrap-object' register its result.
	* guile2/chop/internal.scm (wrap-object): Register the new object.

	guile2: Add proper `class-instance-size'.
	* guile2/chop/internal.scm (class-instance-size): Rename to...
	  (class-pointer-instance-size): ... this.
	  (class-instance-size): New procedure, takes a `class' object as its
	  parameter.

	* guile2/chop/choppers.scm (chopper-generic-open): Update accordingly.

	Add the `CTR' and `AESWRAP' cipher modes.
	* include/chop/cipher.h (CHOP_CIPHER_MODE_CTR,
	  CHOP_CIPHER_MODE_AESWRAP): New enum values.

	* src/cipher.c (cipher_modes)[CTR, AESWRAP]: New values.
	  Update `MAKE_ENUM_MAPPING_FUNCTIONS' call accordingly.
	  (VALID_CIPHER_MODE): Likewise.

	* guile2/chop/cipher.scm (cipher-mode/ctr, cipher-mode/aeswrap): New
	  variables.

	* guile2/test-suite.scm ("lookup-cipher-mode"): Add CIPHER-MODE/CTR.

2011-03-20  Ludovic Courtès  <ludo@gnu.org>

	Augment `.gitignore'.

	guile2: Add beginning of `(chop block-indexers)'.
	* guile2/Makefile.am (SOURCES): Add `chop/block-indexers.scm'.

	* guile2/chop/block-indexers.scm: New file.

	* guile2/chop/cipher.scm (%cipher-algorithm-value, %cipher-mode-value,
	  %unwrap-cipher): New global variables.

	* guile2/chop/hash.scm (%hash-method-value): New global variable.

	* guile2/chop/internal.scm: Export `register-weak-reference'.

	* guile2/test-suite.scm ("block-indexers"): New set of tests.

	guile2: Improve cipher printer.
	* guile2/chop/cipher.scm (<cipher>): Correctly display the algorithm and
	  mode name.

2011-03-19  Ludovic Courtès  <ludo@gnu.org>

	guile2: SRFI-64: Display a backtrace upon error.
	* guile2/srfi/srfi-64.upstream.scm (%test-evaluate-with-catch)[guile]:
	  Call `display-backtrace' from the lazy handler.

2011-03-18  Ludovic Courtès  <ludo@gnu.org>

	guile2: Augment `(chop cipher)'.
	* guile2/chop/cipher.scm (<cipher>): New wrapped pointer type.
	  (%close-cipher, make-cipher, cipher-algorithm, cipher-mode,
	  set-cipher-key!): New procedures.

	* guile2/test-suite.scm ("make-cipher", "set-cipher-key!"): New tests.

2011-03-17  Ludovic Courtès  <ludo@gnu.org>

	guile2: Use `chop_object_destroy' as the object finalizer.
	* guile2/chop/internal.scm (%destroy-object): New variable.
	  (make-object): Use it as a finalizer for PTR.

	guile2: Link C tests against `libchop.la' when using Libtool.
	* guile2/chop/internal.scm (libchop.so): Look for `libchop.la' when
	  %LIBTOOL is true.

	Update Gnulib.

	configure: Initialize $have_guile2.
	* configure.ac: Initialize $have_guile2.

2011-03-14  Ludovic Courtès  <ludo@gnu.org>

	guile2: Add `(chop cipher)'.
	* guile2/Makefile.am (SOURCES): Add `chop/cipher.h'.

	* guile2/chop/cipher.scm: New file.

	* guile2/test-suite.scm ("cipher"): New set of tests.

2011-03-13  Ludovic Courtès  <ludo@gnu.org>

	guile2: Add `(chop hash)'.
	* guile2/Makefile.am (SOURCES): Add `chop/hash.scm'.

	* guile2/chop/hash.scm: New file.

	* guile2/test-suite.scm ("hash"): New set of tests.

	guile2: Add `c-integer-value'.
	* guile2/chop/internal.scm (c-integer-value): New macro.
	  (define-error-code): Use it.
	  (make-object): Simplify.

2011-03-07  Ludovic Courtès  <ludo@gnu.org>

	web: Make more stylish.
	* doc/libchop.css: New file.
	* doc/web.org: Add a #+STYLE marker.  Add a `class' attribute for the
	  chopper.
	* doc/libchop-icon.png: Make transparent.

	Fixlet for Guile 2.0.0.
	* guile2/Makefile.am (TESTS_ENVIRONMENT): `--no-autocompile' ->
	  `--no-auto-compile'.

2011-02-09  Ludovic Courtès  <ludo@gnu.org>

	guile2: Add the beginning of `(chop stores)'.
	* guile2/Makefile.am (SOURCES): Add `chop/stores.scm'.

	* guile2/chop/stores.scm: New file.

	* guile2/test-suite.scm ("stores"): New test series.

	guile2: Improve `libchop-type-constructor'; fix `mem-stream-open'.
	* guile2/chop/internal.scm (make-object): New macro.
	  (libchop-type-constructor): Use it.  Accept an optional return type.

	* guile2/chop/streams.scm (mem-stream-open): Mark as returning `void'.

	guile2: Wrap `mode_t'.
	* guile2/chop/internal.scm (mode_t): New variable.

	guile2: Update to Guile's new `define-wrapped-pointer-type'.
	* guile2/chop/internal.scm (define-libchop-type): Update to today's
	  `define-wrapped-pointer-type'.

2011-02-07  Ludovic Courtès  <ludo@gnu.org>

	guile2: Extend `libchop-method'.
	* guile2/chop/internal.scm (libchop-method): Add new patterns; recognize
	  the `includes' tag.

	guile2: Add `libchop-slot-ref'.
	* guile2/chop/internal.scm (libchop-slot-ref): New macro.

	* guile2/chop/objects.scm (%offset-of-class, %offset-of-name,
	  %offset-of-parent): Remove.
	  (object-class, class-name, class-parent): Use `libchop-slot-ref'.
	  (class-inherits?): Remove `pk'.

	* guile2/chop/choppers.scm (chopper-stream,
	  chopper-typical-block-size): New procedures.
	  (chopper-generic-open): Use `libchop-slot-ref'.

	* guile2/test-suite.scm ("chopper-generic-open"): Check whether
	  `chopper-stream' and `chopper-typical-block-size' work.

2011-02-06  Ludovic Courtès  <ludo@gnu.org>

	Remove `chop_chopper_set_stream'.
	* include/chop/choppers.h (chop_chopper_set_stream): Remove.

	guile2: Add `define-libchop-type'.
	* guile2/chop/objects.scm (class?, print-class, lookup-class): Remove.

	* guile2/chop/internal.scm (%libchop-types): New variable.
	  (class-parent): New macro.
	  (wrap-object, unwrap-object, register-libchop-type!, print-object):
	  New procedures.
	  (define-libchop-type): New macro.
	  (%root-class): New variable.
	  (class): New libchop type definition.  Add bootstrap tricks around.

	* guile2/chop/streams.scm (stream): Use `define-libchop-type'.
	  (print-stream): Remove.

	* guile2/chop/choppers.scm (chopper): Use `define-libchop-type'.
	  (unwrap-stream): Use `unwrap-object'.

2011-02-05  Ludovic Courtès  <ludo@gnu.org>

	guile2: Slightly factorize class name mangling.
	* guile2/chop/internal.scm (full-class-type-name, class-includes): New
	  macros.
	  (libchop-method): Use them.

2011-02-04  Ludovic Courtès  <ludo@gnu.org>

	guile2: Add `(chop choppers)'.
	* guile2/chop/choppers.scm: New file.

	* guile2/Makefile.am (SOURCES): Add it.

	* guile2/chop/internal.scm (compile-time-value): New macro.
	  (class-instance-size): Rename to ...
	  (class-name-instance-size): ... this.
	  (class-instance-size): New public procedure.
	  (libchop-type-constructor): Adjust accordingly.
	  (register-weak-reference, pointer+, make-empty-buffer,
	  buffer->bytevector): New procedures.
	  (%size-of-chop_buffer_t): New variable.

	* guile2/test-suite.scm ("choppers"): New test series.

	guile2: Add `stream->port'.
	* guile2/chop/streams.scm (stream->port): New procedure.

	* guile2/test-suite.scm (make-random-bytevector): New procedure.
	  ("stream->port"): New test.

	guile2: Use `define-wrapped-pointer-type' as found in Guile 1.9.15.
	* guile2/chop/internal.scm (define-wrapped-pointer-type): Remove.
	  Re-export the one from `(system foreign)'.

2010-12-10  Ludovic Courtès  <ludo@gnu.org>

	guile2: Compile/link/execute with Libtool when available.
	* guile2/Makefile.am (.scm.go): Export $CC and $LIBTOOL.

	* guile2/chop/internal.scm (%libtool): New variable.
	  (evaluate-c-integer-expression): Use Libtool for compile/link and
	  execution when available.
	  (%libchop-cc): Use $CC when available.

	guile2: Use the right `-L' and `-l' link flags.
	* guile2/chop/internal.scm (%libchop-libs): New public variable.
	  (define-error-code, %offset-of-instance_size, libchop-method): Use
	  it.

	* guile2/chop/objects.scm (%offset-of-class, %offset-of-name):
	  Likewise.

	guile2: Provide include directory path.
	* guile2/Makefile.am (.scm.go): Export $libchop_includedir.

2010-11-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	doc: layout fixes.
	* doc/libchop.texi: Improve PDF display of title and copyright.
	(Use Cases, Invoking chop-archiver): A few @smallexample for
	less long lines.
	(References): Allow line wrapping in URLs.

2010-11-12  Ludovic Courtès  <ludo@gnu.org>

	Augment `TODO'.

	guile2: Add `mem-stream-open'.
	* guile2/chop/streams.scm (file-stream-open): Add docstring.
	  (mem-stream-open): New procedure.

	* guile2/test-suite.scm ("mem-stream"): New test.

	guile2: Add helper for methods; use it for streams.
	* guile2/chop/internal.scm (libchop-method): New macro.

	* guile2/chop/streams.scm: Export `stream?'.
	  (stream-read!, stream-close): New procedures.
	  (error/unknown-stream, error/stream-end): New variables.

	* guile2/test-suite.scm ("streams"): New test set.

2010-11-11  Ludovic Courtès  <ludo@gnu.org>

	guile2: Add error code values.
	* guile2/chop/core.scm (error/ok, error/unknown-store, error/not-found,
	  error/invalid-arg, error/out-of-range-arg, error/filter-full,
	  error/filter-empty, error/filter-unhandled-fault, error/store-error,
	  error/store-end, error/block-indexer-error, error/block-fetcher-error,
	  error/indexer-error, error/indexer-empty-source,
	  error/store-block-unavailable, error/deserial-too-short,
	  error/deserial-corrupt-input, error/cipher-error,
	  error/cipher-weak-key): New variables.

	* guile2/chop/internal.scm (define-error-code): New macro.

	guile2: Improve the evaluation of C expressions.
	* guile2/chop/internal.scm (compile-time-value): New macro.
	  (evaluate-c-integer-expression): Write the output to stdout using
	  `printf'.  Run the executable with $LD_LIBRARY_PATH set.
	  (c-offset-of): Remove annoying `pk'.
	  (libchop.so): New variable.
	  (%offset-of-instance_size): Use it.  Link with `-Wl,-rpath'.

	guile2: Rename (chop) to (chop core).
	* guile2/Makefile.am (SOURCES): Change `chop.scm' to `chop/core.scm'.

	* guile2/chop.scm: Rename to...
	* guile2/chop/core.scm: ... this.

	* guile2/test-suite.scm: Adjust accordingly.

2010-10-26  Ludovic Courtès  <ludo@gnu.org>

	First stab at Guile 2.x bindings using the dynamic FFI.
	* Makefile.am (SUBDIRS)[HAVE_GUILE2]: Add `guile2'.

	* guile2/Makefile.am, guile2/chop.scm, guile2/chop/internal.scm,
	  guile2/chop/objects.scm, guile2/chop/streams.scm,
	  guile2/srfi/srfi-64.scm, guile2/srfi/srfi-64.upstream.scm,
	  guile2/test-suite.scm: New files.

	Update `TODO'.

2010-08-16  Ludovic Courtès  <ludo@gnu.org>

	Update `NEWS', `THANKS', and `TODO'.

	chop-archiver: Add the `--archive-fd' option.
	* utils/chop-archiver.c (source_is_fd): New variable.
	  (options): Add `--archive-fd'.
	  (process_command, parse_opt): Handle it.

	* tests/utils/archiver-fd: New file.

	* tests/Makefile.am (check_SCRIPTS): Add it.

	* doc/libchop.texi (Use Cases): Use `tar' in the example.
	  (Invoking chop-archiver): Document `--archive-fd'.  Use `tar' in one
	  of the examples.

	stream-file: Add `chop_file_stream_open_fd'.
	* include/chop/streams.h (chop_file_stream_open_fd): New declaration.

	* src/stream-file.c (chop_file_stream_t)[eventually_close]: New field.
	  (file_stream_open): New function.
	  (chop_file_stream_open): Use it.
	  (chop_file_stream_open_fd): New function.
	  (chop_file_stream_close): Honor `file->eventually_close'.

2010-08-15  Ludovic Courtès  <ludo@gnu.org>

	Use Gnulib's `full-read' to read from a stream.
	* src/stream-file.c (chop_file_stream_read): Use Gnulib's `full_read'.

2010-07-25  Ludovic Courtès  <ludo@gnu.org>

	web: Add link to the GHM slides.

2010-07-10  Ludovic Courtès  <ludo@gnu.org>

	Update `autogen.sh'.
	* autogen.sh: Check whether Gnulib was imported and bail out if not.
	  Run "autoreconf" instead of doing things manually.

2010-06-18  Ludovic Courtès  <ludo@gnu.org>

	Add `.version' to the distribution.
	* Makefile.am (EXTRA_DIST): Add `.version' so that no attempt is made to
	  build it when the user builds libchop (building it breaks `distcheck'
	  because it attempts to write to $(top_srcdir).)

	Use Gnulib's `maintainer-makefile' module.

	Add `.gnuploadrc'.

	Use Gnulib's `announce-gen' and `gnupload' modules.

	web: Update introduction.

	Update `INSTALL'.

	Augment `.gitignore'.

	Update `NEWS'.

	chop-archiver: Use a "smart store" proxy by default.
	* utils/chop-archiver.c (smart_storage): New variable.
	  (options)["no-smart-store"]: New option.
	  (parse_opt): Handle it.
	  (main): Setup a "smart store" proxy when SMART_STORAGE and
	  ARCHIVE_QUERIED are true.

	* tests/utils/block-server: When trying to generate a collision with
	  `--zip', use `--no-smart-store' so that `chop-archiver' actually tries
	  to write blocks.

	* doc/libchop.texi (Invoking chop-archiver): Document
	  `--no-smart-store'.

	store-smart: Take a `chop_proxy_semantics_t' argument.
	* include/chop/stores.h (chop_smart_block_store_open): Update
	  declaration.

	* src/store-smart.c (chop_smart_block_store_t): New `backend_ps' field.
	  (sbs_dtor): New function.
	  (chop_smart_block_store_class): Use it as a destructor.
	  (chop_smart_block_store_close): Close the back-end if BACKEND_PS is
	  `CHOP_PROXY_EVENTUALLY_CLOSE'.
	  (chop_smart_block_store_open): Add `bps' argument.

	doc: Improve introductory material.
	* doc/libchop.texi (Introduction): Add paragraph on the requirements of
	  a cooperative backup system.
	  (Overview): Improve wording.  Add xref to `Invoking chop-archiver'.
	  (Use Cases): Add backup-to-untrusted-site example using
	  `chop-archiver'.
	  (Invoking chop-archiver): Say "similarity detection" instead of
	  mentioning Udi Manber.

	doc: Fix title and use the generated `version.texi'.
	* doc/libchop.texi: Choose a better title.  Include `version.texi'.

2010-06-15  Ludovic Courtès  <ludo@gnu.org>

	Update `NEWS'.

	Improve debugging output of `chop-archiver'.
	* utils/chop-archiver.c (process_command): When FETCHER_LOG is NULL, try
	  `chop_chk_block_fetcher_log'.

	Fix tests for the stand-alone utilities.
	* tests/utils/archiver (chop_test_archive_restore): Exit upon failure of
	  `chop-archiver'.

	* tests/utils/block-server (chop_test_archive_restore): Ditto.

	Fix memory leak in the CHK block indexer.
	* src/block-indexer-chk.c (cbi_dtor): Destroy `indexer->log'.

	block-indexer-chk: Check block integrity when fetching.
	* src/block-indexer-chk.c (chop_block_fetcher_t): Add
	  `block_id_hash_method' field.
	  (cbf_ctor): Initialize it.
	  (cbf_serialize): Serialize `block_id_hash_method' in ASCII.
	  (cbf_deserialize): Deserialize it when available.
	  (chk_block_fetch): Check the integrity of CIPHERTEXT according to
	  BLOCK_ID_HASH_METHOD.  Return an error when the hashes differ.
	  (chk_indexer_init_fetcher): Initialize the `hash_method' field of
	  FETCHER.

	* tests/features/block-indexer-hash.c: Rename to...
	* tests/features/block-indexer-integrity.c: ... this.
	  (main)[block_indexer_classes, block_indexer_serials]: Add CHK
	  examples.

	* tests/Makefile.am (check_PROGRAMS): Change `block-indexer-hash' to
	  `block-indexer-integrity'.

	Export `chop_chk_block_fetcher_log'.
	* include/chop/block-indexers.h (chop_chk_block_fetcher_log): New
	  declaration.

	* src/block-indexer-chk.c (chop_chk_block_fetcher_log): New function.

	Generalize the `block-indexer-hash' test.
	* tests/features/block-indexer-hash.c (test_index_and_fetch): New
	  INDEXER and HASH_METHOD arguments.  Remove INDEXER's instantiation.
	  Attach FETCHER's log when in debug mode.  Adjust to match HASH_METHOD
	  instead of MD5.
	  (main)[block_indexer_classes, block_indexer_serials]: New variables.
	  Iterate over them.

2010-06-07  Ludovic Courtès  <ludo@gnu.org>

	Update `TODO'.

	block-indexer-hash: Check block integrity when fetching.
	* src/block-indexer-hash.c (chop_hash_block_fetcher_t): Add
	  `hash_method' field.
	  (hbf_ctor): Initialize it.
	  (hbf_serialize): Serialize `hash_method' in ASCII.
	  (hbf_deserialize): Deserialize.
	  (hash_block_fetch): Check the integrity of BUFFER according to
	  HASH_METHOD.  Return an error when the hashes differ.
	  (hash_indexer_init_fetcher): Initialize the `hash_method' field of
	  FETCHER.

	* tests/Makefile.am (check_PROGRAMS): Add `features/block-indexer-hash'.

	* tests/features/block-indexer-hash.c: New file.

	* doc/libchop.texi (Invoking chop-archiver): Update examples
	  accordingly.

2010-06-06  Ludovic Courtès  <ludo@gnu.org>

	Use `git-version-gen'.
	* Makefile.am (dist-hook): Depend on `gen-tarball-version'.
	  (BUILT_SOURCES): New variable.
	  ($(top_srcdir)/.version, gen-tarball-version): New targets.

	* configure.ac: Run `build-aux/git-version-gen' to get the version
	  number.

	Import Gnulib's `git-version-gen'.
	* m4/gnulib-cache.m4: Add `git-version-gen'.

	Update `NEWS'.

	Update web page.

	Update `TODO'.

	First stab at a file system based block store.
	* include/chop/stores.h (chop_fs_block_store_class, chop_fs_store_open):
	  New declarations.

	* src/Makefile.am (libchop_la_SOURCES): Add `store-fs.c'.

	* src/store-fs.c: New file.

	* tests/interfaces/stores.c (main)[classes]: Add `chop_fs_block_store_class'.
	  [random_bytes]: Shrink to 64 to avoid `ENAMETOOLONG'.

	Switch to C99.
	* configure.ac: Use `AC_PROG_CC_C99'.

	Import Gnulib's `full-read' and `full-write' modules.
	* m4/gnulib-cache.m4: Add `full-read' and `full-write'.

	* m4/.gitignore: Update.

2010-06-03  Ludovic Courtès  <ludo@gnu.org>

	Add missing includes of <chop/chop-config.h>.
	* src/block-indexer-chk.c, src/store-dummy.c: Include
	  <chop/chop-config.h>.

2010-05-07  Ludovic Courtès  <ludo@gnu.org>

	web: Add icon; update.

2010-03-02  Ludovic Courtès  <ludo@gnu.org>

	Add `NEWS'.

	Always depend on GNU gperf.
	* README: Update.

	* configure.ac: Raise an error if `gperf' is not found.  Remove
	  `HAVE_GPERF' Automake conditional and cpp macro.

	* src/Makefile.am (BUILT_SOURCES): Remove `HAVE_GPERF' condition.

	* tests/Makefile.am (check_PROGRAMS): Likewise.

	* utils/chop-archiver.c [!HAVE_GPERF]: Remove code under that condition.

	* utils/chop-block-server.c [!HAVE_GPERF]: Likewise.

	* utils/chop-store-convert.c [!HAVE_GPERF]: Likewise.

	* utils/chop-store-list.c [!HAVE_GPERF]: Likewise.

2010-02-27  Ludovic Courtès  <ludo@gnu.org>

	Add org-mode source of the web page.

	Bump version number to 0.2.
	* configure.ac: Bump version number to 0.2.

	Remove extraneous `AUTOMAKE_OPTIONS'.
	* Makefile.am (AUTOMAKE_OPTIONS): Remove.

	Update `TODO', `.gitignore'.

	Use Gnulib's `gitlog-to-changelog'.
	* m4/gnulib-cache.m4: Add `gitlog-to-changelog'.

	* Makefile.am (dist-hook, gen-ChangeLog): New targets, adapted from
	  Guile.

	configure: Use `LT_INIT'.
	* configure.ac: Use the newer `LT_INIT' form.  Disable static libs by
	  default.

	Fix printf format strings in tests.
	* tests/features/filter-zip.c (main): Fix format string.

	* tests/interfaces/choppers.c (main): Likewise.

	Use a reasonable name for multiple-inclusion guards in `.h' files.
	for i in *.h ; do sed -i $i -e's/__\([A-Z_]\+\)_H__/\1_H/g' ; done

	* include/chop/*.h: Rename `__CHOP_FOO_H__' to `CHOP_FOO_H'.

	doc: Improve typography.
	* doc/libchop.texi: Add comma after "e.g." and "i.e.".

	chop-archiver: Create `$HOME/.chop-archiver' when it doesn't exist yet.
	* utils/chop-archiver.c (DB_DATA_FILE_BASE, DB_META_DATA_FILE_BASE):
	  Remove `CONFIG_DIRECTORY/'.
	  (open_db_store): Adjust accordingly.  Create `$HOME/CONFIG_DIRECTORY'
	  if it doesn't exist yet.  Simplify string twiddling.

2010-02-26  Ludovic Courtès  <ludo@gnu.org>

	doc: Improve intro, object system, and references.
	* doc/libchop.texi (Introduction): Improve the wording, fix typos.
	  (API Reference): Add "refer to the header files".
	  (Object System): Remove part of the discussion, move the rest into a
	  footnote.
	  (References): Add GNUnet, Tahoe-LADS, the PhD thesis, and "Storage
	  Tradeoffs...".

	doc: Document `chop-archiver'.
	* doc/libchop.texi (Invoking chop-archiver): Fill in.
	  (Invoking chop-block-server): Clarify OpenPGP/TLS.

	doc: Clean up main menu.
	* doc/libchop.texi (Top): Document the main menu.
	  (Libchop's Object System): Rename to...
	  (Object System): ... this.

	doc: Document `chop-block-server'.
	* doc/libchop.texi (Utilities): Augment intro.
	  (Invoking chop-archiver): New empty node.
	  (Invoking chop-block-server): New node.
	  (References): New node.

	chop-block-server: Gracefully exit when a signal is caught.
	* utils/chop-block-server.c (main_continuation): New variable.
	  (terminate, signal_handler): New functions.
	  (main): Register `terminate ()' as an atexit(3) handler.  Initialize
	  MAIN_CONTINUATION and call `terminate ()' before leaving.

	block-indexer-chk: Use base32 encoding for the ASCII serialization.
	* src/block-indexer-chk.c (chk_serialize): Serialize the CHK to base32
	  instead of hexadecimal.
	  (chk_deserialize): Adjust accordingly.

	block-indexer-hash: Use base32 encoding for the ASCII serialization.
	* src/block-indexer-hash.c (hih_serialize): Serialize the key to base32
	  instead of hexadecimal.
	  (hih_deserialize): Adjust accordingly.

	Add tests for `chop-archiver' and `chop-block-server'.
	* tests/Makefile.am (check_SCRIPTS, EXTRA_DIST, TESTS_ENVIRONMENT): New
	  variables.
	  (TESTS): Add `$(check_SCRIPTS)'.

	* tests/utils/archiver, tests/utils/block-server, tests/utils/lib.sh,
	  tests/utils/test-key.dsa.pub, tests/utils/test-key.dsa.sec,
	  tests/utils/test-key.rsa.pub, tests/utils/test-key.rsa.sec,
	  tests/utils/tls-dh-params, tests/utils/tls-rsa-params: New files.

	Consistently expect base64-encoded OpenPGP keys.
	* src/store-sunrpc.c (make_default_tls_session): Use
	  `GNUTLS_OPENPGP_FMT_BASE64'.

	* utils/chop-block-server.c (initialize_tls_parameters, tls_authorizer):
	  Likewise.

	Update GnuTLS debugging method.
	* src/sunrpc-tls.c (ENABLE_GNUTLS_LOGGING): Use
	  `gnutls_global_set_log_*'.
	  (_gnutls_log_level, _gnutls_log_func): Remove declarations.

2010-02-25  Ludovic Courtès  <ludo@gnu.org>

	Add copyright/license header to the RPC interface definition.
	* rpc/block_rstore.x: Add copyright/license header.

	Remove extra level of makefile.
	* rpc/Makefile.am: Remove.

	* Makefile.am (SUBDIRS): Remove `rpc'.
	  (EXTRA_DIST): New variable.

	* configure.ac: Don't produce `rpc/Makefile'.

	Update `TODO'.

	Guile: Don't include <chop/chop-config.h> in include support files.
	* guile/block-indexers-support.c, guile/choppers-support.c,
	  guile/core-support.h, guile/filters-support.c, guile/hash-support.c,
	  guile/indexers-support.c, guile/logs-support.c,
	  guile/store-stats-support.c, guile/stores-support.c,
	  guile/streams-support.c: Don't include <chop/chop-config.h> since
	  these files are meant to be included in other C files that already
	  include it.

	* guile/core-support.c: Include <chop/chop-config.h>.

	Guile: Fix makefile.
	* guile/Makefile.am (libguile_chop_la_SOURCES): Remove
	  $(support_c_files) and $(support_h_files).
	  (EXTRA_DIST): Add $(support_c_files) and $(support_h_files).

	Check for BDB 4.x instead of 4.4.
	* configure.ac: Check for `libdb-4', not `libdb-4.4'.

	* README: Update accordingly.

	base32: Add decoder and more tests.
	* src/base32.c (is_base32): New function.
	  (B32): New macro.
	  (base32_values): New variable.
	  (base32_value, chop_base32_string_to_buffer): New functions.

	* include/chop/chop.h (chop_base32_string_to_buffer): New declaration.

	* tests/features/base32.c (struct sample): New type.
	  (samples): New variable.
	  (encoding, decoding, decoding_non_padded_strings,
	  decoding_strings_with_trailing_garbage, random_data): New functions.
	  (main): Use them.

	base32: Fix off-by-ones in the encoder.
	* src/base32.c (chop_buffer_to_base32_string): Fix off-by-one in `case 3'.
	  Fix off-by-one on the loop condition on J.

2010-02-24  Ludovic Courtès  <ludo@gnu.org>

	Add base32 (RFC 4648) encoding.
	* src/base32.c, tests/features/base32.c: New files.

	* src/Makefile.am (libchop_la_SOURCES): Add `base32.c'.

	* tests/Makefile.am (check_PROGRAMS): Add `features/base32.c'.

	* include/chop/chop.h (chop_buffer_to_base32_string): New declaration.

2010-02-21  Ludovic Courtès  <ludo@gnu.org>

	doc: Rework introduction.
	* doc/libchop.texi (Introduction): Rework.

	* README: Update accordingly.

	doc: Document input byte streams.
	* doc/libchop.texi (Input Streams): Fill in.

	* include/chop/streams.h (chop_mem_stream_open): Fix typo in comment.

	Use Automake's `color-tests' and `parallel-tests'.
	* configure.ac: Use Automake's `color-tests' and `parallel-tests'.

	Merge `tests' makefiles into a single one.
	* configure.ac: Use Automake's `subdir-objects' option.

	* tests/Makefile.am (SUBDIRS): Remove.
	  (noinst_HEADERS, check_PROGRAMS, TESTS, AM_CPPFLAGS, LIBS): New
	  variable, merged from former `Makefile.am's in sub-directories.

	* tests/features/Makefile.am, tests/interfaces/Makefile.am,
	  tests/include/Makefile.am: Remove.

	Replace `errcode_t' by `chop_error_t' in the manual.
	* doc/libchop.texi: Change `errcode_t' to `chop_error_t'.

	Don't build `chop-store-discover' when Avahi is not available.
	* utils/Makefile.am (bin_PROGRAMS): Add `chop-store-discover' only if
	  `HAVE_AVAHI'.
	  (chop_store_discover_LDADD): Conditionalize on `HAVE_AVAHI'.

	Don't add <chop/chop-config.h> to the distribution; don't install it.
	* include/Makefile.am (nobase_include_HEADERS): Remove `chop-config.h'.

	configure: Print a summary of the available dependencies.
	* configure.ac: Define `$have_guile'.  Print a summary of the available
	  dependencies.

	Tweak Automake.
	* configure.ac (AM_INIT_AUTOMAKE): Add `1.11 gnu silent-rules
	  std-options'.

	Rename `chop-rcs' to `chop-vcs'; add `--help' and `--version'.
	* configure.ac: Output `utils/chop-vcs'.  Make it executable.

	* utils/Makefile.am (dist_bin_SCRIPTS): Remove.
	  (bin_SCRIPTS): New.

	* utils/chop-rcs.sh: Rename to...
	* utils/chop-vcs.in: ... this.  Add `--help' and `--version' output.

	Add missing <argp.h> includes.
	* utils/chop-block-server.c, utils/chop-dbus-block-server.c,
	  utils/chop-file.c: Add #include <argp.h>.

	Use Gnulib's `argp' module.
	* m4/gnulib-cache.m4: Add `argp'.

	* src/Makefile.am (libchop_la_LDFLAGS): Add `$(LTLIBINTL)', suggested by
	  Gnulib.

	Improve Avahi detection.
	* configure.ac: Use `PKG_CHECK_MODULES' to detect Avahi.  Now
	  $AVAHI_CFLAGS is defined, not $AVAHI_CPPFLAGS.

	* src/Makefile.am (libchop_block_server_la_CFLAGS): New variable.
	  (libchop_block_server_la_CPPFLAGS): Remove `$(AVAHI_CPPFLAGS)'.
	  (libchop_store_browsers_la_CFLAGS): New variable.
	  (libchop_store_browsers_la_CPPFLAGS): Remove `$(AVAHI_CPPFLAGS)'.

	* utils/Makefile.am (chop_block_server_LDADD): Remove `$(AVAHI_LIBS)'.
	  (chop_block_server_CPPFLAGS): Remove `$(AVAHI_CPPFLAGS)'.
	  (chop_dbus_block_server_CPPFLAGS): Remove `$(AVAHI_CPPFLAGS)'.

	Fix the output of `--version' and the bug-report address.
	* AUTHORS: Update email address.

	* configure.ac: Update bug-report address.

	* utils/chop-*.c (argp_program_version): Include `PACKAGE_NAME' and
	  `PACKAGE_VERSION'.
	  (argp_program_bug_address): Use `PACKAGE_BUGREPORT'.

2010-02-20  Ludovic Courtès  <ludo@gnu.org>

	Update `.gitignore'.

	Fix `make distcheck'.
	* src/Makefile.am (CLEANFILES): Add $(nodist_libchop_la_SOURCES).

	Update `TODO'.

	Add explicit Valgrind/memcheck calls.
	* configure.ac: Check for <valgrind/memcheck.h>.

	* src/block-indexer-chk.c (chk_index_block): Add
	  `VALGRIND_CHECK_MEM_IS_DEFINED' call.  Add log messages detailing the
	  error cases.

	* src/indexer-tree.c (chop_tree_index_blocks): Add
	  `VALGRIND_CHECK_MEM_IS_DEFINED' call.

	* src/store-generic-db.c (DB_WRITE_BLOCK_METHOD): Likewise.

	Use `pkg-config' to detect GnuTLS.
	* configure.ac: Use `PKG_CHECK_MODULES' instead of `AM_PATH_LIBGNUTLS'
	  to detect GnuTLS.  The latter is no longer available in GnuTLS 2.8.

	* src/Makefile.am (libchop_la_CFLAGS): New variable.
	  (libchop_la_CFLAGS)[HAVE_GNUTLS]: Add $(LIBGNUTLS_CFLAGS)
	  $(LIBGNUTLS_EXTRA_CFLAGS).

	* utils/Makefile.am (chop_openpgp_tool_CFLAGS): New variable.

	indexer-tree: Add debugging statement.
	* src/indexer-tree.c (chop_tree_index_blocks): Add `chop_log_printf ()'
	  call describing the error.

	Fix typo.
	* include/chop/errors.h: Fix typo.

	Provide more debugging output in `stream-indexing'.
	* tests/features/stream-indexing.c (main): Attach the log of INDEXER
	  when in debugging mode.

	Add a CHK test in `stream-indexing'.
	* tests/features/stream-indexing.c (block_indexer_classes): Add another
	  `chop_chk_block_indexer_class' occurrence.
	  (block_indexer_serials): Add another CBI instance.

	Remove temporary files created by test programs.
	* tests/features/stream-indexing.c (main): Unlink STORE_FILE_NAME before
	  leaving.

	* tests/interfaces/block-indexers.c (main): Likewise.

	* tests/interfaces/indexers.c (main): Likewise.

	* tests/interfaces/stores.c (main): Unlink DB_FILE before leaving.

	Always use GDBM for the `stream-indexing' test.
	* tests/features/stream-indexing.c (test_configuration): Always use
	  GDBM.

	block-indexer-chk: Initialize the log.
	* src/block-indexer-chk.c (cbi_ctor): Initialize INDEXER->LOG.

	block-indexer-chk: Use heap allocation when input buffer is too large.
	* src/block-indexer-chk.c (ALLOCA_THRESHOLD): New macro.
	  (chk_index_block): Allocate NEW_BUFFER and BLOCK_CONTENT on the heap
	  when TOTAL_SIZE > ALLOCA_THRESHOLD.

	block-indexer-chk: Fix out-of-bounds buffer access.
	* src/block-indexer-chk.c (chk_index_block): If SIZE < TOTAL_SIZE, copy
	  BUFFER to a TOTAL_SIZE-large buffer so that `chop_cipher_encrypt ()'
	  is passed a buffer that is as large as claimed.

	block-indexer-chk: Improve error handling in the block fetcher deserializer.
	* src/block-indexer-chk.c (cbf_deserialize): Return ERR when
	  `chop_object_initialize ()' fails.

	block-indexer-chk: Fix the cipher key computation.
	* src/block-indexer-chk.c (cipher_make_suitable_key): Handle the case
	  where SOURCE_SIZE > KEY_SIZE.

2010-02-19  Ludovic Courtès  <ludo@gnu.org>

	chop-archiver: Always exit with non-zero upon failure.
	* utils/chop-archiver.c (main)[failed]: New variable.  Set to 1 if
	  `process_command ()' returns an error.  Exit with `EXIT_FAILURE' when
	  FAILED is set.

	Fix size of RipeMD160.
	* src/hash.c (hash_methods): Fix size of RipeMD160.

	Get rid of the dependency on libcom_err.
	* README, TODO: Update.

	* configure.ac: Remove checks for libcom_err.

	* include/Makefile.am (nobase_include_HEADERS): Remove
	  `chop/chop-errors.h'; add `chop/errors.h'.
	  (BUILT_SOURCES): Remove `chop/chop-errors.h'.

	* include/chop/chop.h: Include <chop/errors.h>.
	  (chop_error_t): Remove typedef.

	* include/chop/errors.h: New file.

	* src/Makefile.am (EXTRA_DIST): Remove `chop-errors.et'.
	  (libchop_la_SOURCES): Remove `chop-errors.c'.
	  (chop-errors.c): Remove target.
	  (BUILT_SOURCES): Add `errors.c'.
	  (errors.c): New target.

	Add missing include in <chop/logs.h>.
	* include/chop/logs.h: Include <stdarg.h>.

	Cosmetic change.
	* src/chop.c (chop_tracked_object_t, chop_untracked_object_t): Move
	  typedefs below struct definitions.

2010-02-18  Ludovic Courtès  <ludo@gnu.org>

	Remove `.arch-inventory'.
	No, don't be nostalgic!

	Update `.gitignore'.

	Use Gnulib's `progname'.
	* m4/gnulib-cache.m4: Add `progname'.  Switch to GPL.

	* utils/chop-archiver.c, utils/chop-block-server.c,
	  utils/chop-show-similarities.c, utils/chop-store-convert.c,
	  utils/chop-store-discover.c, utils/gnutls-helper.h: Use <progname.h>
	  and `set_program_name ()'.  Remove definition of `program_name'.

	* src/chop.c (chop_error): Use PROGRAM_NAME from <progname.h>.

	* tests/include/testsuite.h (_test_program_name): Remove.
	  (test_init): Use `set_program_name ()'.

	* tests/interfaces/cipher.c (program_name): Remove.

	Update Gnulib.

	Introduce `chop_error_message ()' and `chop_error ()'.
	* include/chop/chop.h (chop_error_message, chop_error): New
	  declarations.

	* src/chop.c (chop_error_message, chop_error): New functions.
	  Change all source files to use these functions instead of libcom_err's
	  `error_message ()' and `com_err ()'.

	Fix <chop/logs.h> for non-GCC.
	* include/chop/logs.h (_chop_log_printf)[!__GNUC__]: Rename macro to...
	  (chop_log_printf): ... this.

	Introduce `chop_error_t'.
	* include/chop/chop.h (chop_error_t): New typedef.  Update all source
	  files to use `chop_error_t' instead of `errcode_t'.

2010-02-17  Ludovic Courtès  <ludo@gnu.org>

	Update `TODO'.

2010-02-12  Ludovic Courtès  <ludo@gnu.org>

	Fix the anchor-based chopper.
	* src/chopper-anchor-based.c (sliding_window_t)[raw_window, windows]:
	  Change from `char' to `uint8_t'.  Update users accordingly.
	  (chop_anchor_based_chopper_t)[prev_first_char]: Likewise.
	  (ANCHOR_PRIME_NUMBER, ANCHOR_MODULO_MASK): Explicitly make unsigned.
	  (multiply_with_prime_to_the_ws, read_sliding_window,
	  sliding_window_dest_buffer, sliding_window_copy_second_half,
	  sliding_window_first_half, compute_window_fingerprint): Use unsigned
	  arithmetic on bytes.

2010-02-11  Ludovic Courtès  <ludo@gnu.org>

	Fix `printf' format strings.
	* src/block-indexer-chk.c, src/block-indexer-hash.c,
	  src/chopper-anchor-based.c, src/cipher.c,
	  src/filter-lzo-common.c, src/filter-lzo-unzip.c, src/filter-lzo-zip.c,
	  src/filter-zip-push-pull.c, src/indexer-tree.c, src/logs.c,
	  src/store-dummy.c, src/store-smart.c, src/store-stat.c,
	  src/store-sunrpc.c, src/sunrpc-tls.c,
	  tests/features/chopper-anchor-based.c, tests/features/filter-zip.c,
	  tests/interfaces/choppers.c, tests/interfaces/cipher.c,
	  tests/interfaces/class-lookup.c, tests/interfaces/filters.c,
	  tests/interfaces/indexers.c, tests/interfaces/stores.c,
	  utils/chop-archiver.c, utils/chop-show-anchors.c,
	  utils/chop-show-similarities.c, utils/chop-store-convert.c,
	  utils/chop-store-discover.c, utils/chop-store-list.c: Use `%zu' when
	  using `printf ()' with `size_t' items.  Use `%l' in cases where the
	  integer really is a `long'.

	Change license of the manual to GFDLv1.3+.
	* doc/Makefile.am (EXTRA_DIST): New variable.

	* doc/fdl-1.3.texi: New file.

	* doc/libchop.texi: Fix copyright notice.  Change license to GFDLv1.3+.

	Add license header for `README' and `TODO'.

	Update `TODO'.

	Fix error handling in `chop_file_stream_open ()'.
	* src/stream-file.c (chop_file_stream_open): If stat(2) fails, return
	  ERRNO, not ERR.

	Fix license header of the Scheme source files.
	* guile/*.scm: Fix copyright notice.  Change from LGPLv2+ to GPLv3+.

	Go GPLv3+!
	* COPYING: New file.

	* Add GPLv3+ license header to all C files, `Makefile.am', and shell
	  scripts.

2010-02-09  Ludovic Courtès  <ludo@gnu.org>

	Update `README' wrt. LZO 2.x.

	Disable Guile bindings by default.
	* configure.ac: Disable Guile bindings by default.

	Switch from LZO 1.x to LZO 2.x.
	* configure.ac: Check for liblzo2 and <lzo/lzo1x.h>.

	* src/filter-lzo-unzip.c: Include <lzo/lzo1x.h> instead of <lzo1x.h>.

	* src/filter-lzo-zip.c: Likewise.

	Update `TODO'.

2010-02-08  Ludovic Courtès  <ludo@gnu.org>

	Update `gnulib-cache.m4'.

	Update email address.
	* configure.ac: Update email address.  Update Automake initialization
	  style.

	Update to the current GnuTLS API.
	* configure.ac: Require GnuTLS 2.2.0 or later.  2.2.0 is the version
	  that introduced the FORMAT parameter to
	  `gnutls_certificate_set_openpgp_key_file ()'.

	* src/store-sunrpc.c (make_default_tls_session): Add FORMAT argument to
	  `gnutls_certificate_set_openpgp_key_file ()'.

	* utils/chop-block-server.c (initialize_tls_parameters): Likewise.

	Always include <config.h> first.
	* guile/core-support.h, include/chop/objects.h, src/chop.c,
	  src/chopper-anchor-based.c, src/indexer-tree.c,
	  src/store-browser-avahi.c, src/store-publisher-avahi.c,
	  src/store-sunrpc.c, tests/features/filter-zip.c,
	  tests/interfaces/block-indexers.c, tests/interfaces/stores.c,
	  utils/chop-archiver.c, utils/chop-block-server.c,
	  utils/chop-openpgp-tool.c, utils/chop-store-convert.c,
	  utils/chop-store-list.c: Always include <chop/chop-config.h> first.

	Don't rely on UUID classes when !HAVE_LIBUUID.
	* src/chop.c [!HAVE_LIBUUID]: Remove declarations of UUID-related
	  classes.

	configure: Fix `AC_PATH_PROG' uses; improve error messages.
	* configure.ac: Fix erroneous third argument to `AC_PATH_PROG'
	  invocations.  Improve error messages about missing dependencies.

2008-04-13  Ludovic Courtès  <ludo@gnu.org>

	Add `.gitignore'.

	Fix `src' Makefile.
	* src/Makefile.am (BUILT_SOURCES): Add `$(rpc_server_stubs)' since it's
	  included.
	  (nodist_libchop_block_server_la_SOURCES): Remove.

	configure: Fix G-Wrap detection.
	* configure.ac: Support G-Wrap versions >= 1.9.10.

	configure: Don't issue Guile-related message when Guile bindings are disabled.
	* configure.ac: Check whether `$produce_guile_bindings' is true before
	  warning the user about `$guilemoduledir' != `$GUILE_SITE'.

	Don't include generated files in the distribution.
	* guile/Makefile.am (libguile_chop_la_SOURCES): Add support [ch] files.
	  (libguile_chop_la_SOURCES): Prepend `nodist_'.
	  (libguile_chop_store_browsers_la_SOURCES,
	  libguile_chop_block_server_la_SOURCES): Likewise.
	  (EXTRA_DIST): Remove support [ch] files.

	* src/Makefile.am (nodist_libchop_la_SOURCES): New, contains client
	  stubs and XDR code.
	  (BUILT_SOURCES): Limit to `$(rpc_headers)'.
	  (nodist_libchop_block_server_la_SOURCES): New.

2007-11-20  Ludovic Courtes  <ludo@gnu.org>

	store-sunrpc: Add support for more ciphers.
	* src/store-sunrpc.c (make_default_tls_session)[cipher_prio]: Add more
	  ciphers.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-189

	store-sunrpc: Add support for more ciphers.
	* src/store-sunrpc.c (make_default_tls_session)[cipher_prio]: Add more
	  ciphers.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-64

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 180-188)

	   - configure: New `--with-guilemoduledir' option.
	   - Fix packaging of Guile bindings; `--enable-guile' by default.
	   - Updated dependency information.
	   - Initial Debian packaging.
	   - configure: No longer use `pkg-config' for TDB.
	   - Debian: Add dependency on `guile-g-wrap'.
	   - Fix Guile module installation.
	   - Fix spurious alignment-related warnings.
	   - Debian: Add proper `shlibs.local'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-63

2007-11-05  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Debian: Add proper `shlibs.local'.
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-188

2007-11-03  Ludovic Courtes  <ludo@gnu.org>

	Fix spurious alignment-related warnings.
	* guile/core-support.c (chop_scm_realloc): Add cast to `void *' to avoid
	  "cast increases alignment requirement" warnings on ARMEL.
	  (chop_scm_free): Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-187

	Fix Guile module installation.
	* guile/Makefile.am (chopguilemoduledir): New.
	  (nodist_guilemodule_DATA): Renamed to...
	  (nodist_chopguilemodule_DATA): This.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-186

	Fix spurious alignment-related warnings.
	* guile/core-support.c (chop_scm_realloc): Add cast to `void *' to avoid
	  "cast increases alignment requirement" warnings on ARMEL.
	  (chop_scm_free): Likewise.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-62

2007-11-02  Ludovic Courtes  <ludo@gnu.org>

	Fix Guile module installation.
	* guile/Makefile.am (chopguilemoduledir): New.
	  (nodist_guilemodule_DATA): Renamed to...
	  (nodist_chopguilemodule_DATA): This.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-61

	Debian: Add dependency on `guile-g-wrap'.
	* debian/control (libchop): Add dependency on `guile-g-wrap'.
	  (libchop-guile): Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-185

	configure: No longer use `pkg-config' for TDB.
	* configure.ac: Revert
	  `lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-170' to
	  support older versions of TDB (e.g., TDB 1.0.x as found in Debian
	  Etch).

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-184

	Debian: Add dependency on `guile-g-wrap'.
	* debian/control (libchop): Add dependency on `guile-g-wrap'.
	  (libchop-guile): Likewise.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-60

	configure: No longer use `pkg-config' for TDB.
	* configure.ac: Revert
	  `lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-170' to
	  support older versions of TDB (e.g., TDB 1.0.x as found in Debian
	  Etch).

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-59

2007-11-01  Ludovic Courtes  <ludo@gnu.org>

	Initial Debian packaging.
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-183

	Updated dependency information.
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-182

	Fix packaging of Guile bindings; `--enable-guile' by default.
	* configure.ac (produce_guile_bindings): Set to "yes" by default.

	* guile/Makefile.am (built_h_files, support_h_files): New.
	  (EXTRA_DIST): Add `$(support_h_files)'.
	  (CLEANFILES): Add `$(built_h_files)'.
	  (AM_CFLAGS): Removed.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-181

	configure: New `--with-guilemoduledir' option.
	* configure.ac: Support `--with-guilemoduledir'.

	* guile/Makefile.am (chop_moduledir): Removed.
	  (nodist_chop_module_DATA): Renamed to...
	  (nodist_guilemodule_DATA): This.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-180

	Initial Debian packaging.
	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-58

	Updated dependency information.
	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-57

	Fix packaging of Guile bindings; `--enable-guile' by default.
	* configure.ac (produce_guile_bindings): Set to "yes" by default.

	* guile/Makefile.am (built_h_files, support_h_files): New.
	  (EXTRA_DIST): Add `$(support_h_files)'.
	  (CLEANFILES): Add `$(built_h_files)'.
	  (AM_CFLAGS): Removed.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-56

	configure: New `--with-guilemoduledir' option.
	* configure.ac: Support `--with-guilemoduledir'.

	* guile/Makefile.am (chop_moduledir): Removed.
	  (nodist_chop_module_DATA): Renamed to...
	  (nodist_guilemodule_DATA): This.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-55

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 171-179)

	   - Fixed tiny bug in CHK index handle deserialization (mudflap).
	   - Make `chop_file_stream_close ()' idempotent, which fixes a bug with
	     Guile bindings.
	   - Guile: Honor `HAVE_LIBUUID'.
	   - Better handle GCC-specific flags.
	   - Fixed harmless GCC warnings.
	   - Guile: Use Autoconf-generated `inline' instead of `__inline__'.
	   - Fixed harmless GCC warnings in the test suite.
	   - file-stream: Don't use `mmap ()'.
	   - Don't explicitly define `_GNU_SOURCE'

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-54

2007-10-15  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Don't explicitly define `_GNU_SOURCE'
	* src/Makefile.am (AM_CPPFLAGS): Removed `-D_GNU_SOURCE' since Gnulib
	  already takes care of this.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-179

	file-stream: Don't use `mmap ()'.
	* src/stream-file.c (chop_file_stream_open): Use `#ifdef USE_MMAP' for
	  mmap-related code.
	  (chop_file_stream_close): Likewise.
	  (chop_file_stream_read): Likewise.  Use `read(2)' otherwise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-178

2007-09-03  Ludovic Courtes  <ludo@gnu.org>

	Fixed harmless GCC warnings in the test suite.
	* tests/include/testsuite.h (TEST_PRINTF): Renamed to...
	  (CHOP_TEST_PRINTF): New.
	  Use `_CHOP_UNUSED' when needed.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-177

	Guile: Use Autoconf-generated `inline' instead of `__inline__'.
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-176

	Fixed harmless GCC warnings.
	* guile/*-support.c: Don't declare functions that are non-inlinable
	  (e.g., because they use `alloca ()'.)

	* guile/core-support.c (chop_scm_realloc): Cast DATA to `char *'.
	  (chop_scm_free): Likewise.

	* include/chop/block-indexers.h (chop_integer_block_fetcher_log,
	  chop_uuid_block_fetcher_log): New declarations.

	* src/buffers.c (chop_buffer_grow): Made `static'.

	* src/chop.c (chop_lookup_class_entry): New declaration.
	  (chop_integer_to_hex_string): Commented out.

	* src/filter-lzo-zip.c (chop_initialize_lzo): New declaration.

	* src/store-browser-avahi.c (chop_avahi_store_browser_open): Fixed
	  statements-before-declarations.

	* utils/chop-archiver.c (do_archive, do_retrieve): Made `static'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-175

	Better handle GCC-specific flags.
	* configure.ac: Test `$GCC' and change `CFLAGS' accordingly.

	* src/Makefile.am (AM_CFLAGS): Don't specify `-fno-strict-aliasing' et
	  al. here.

	* tests/features/Makefile.am (AM_CFLAGS): Likewise.

	* tests/interfaces/Makefile.am (AM_CFLAGS): Likewise.

	* utils/Makefile.am (AM_CFLAGS): Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-174

	Guile: Honor `HAVE_LIBUUID'.
	* guile/block-indexers-support.c (chop_uuid_block_indexer_open_alloc):
	  Return `CHOP_ERR_NOT_IMPL' when `HAVE_LIBUUID' is undefined.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-173

2007-09-02  Ludovic Courtes  <ludo@gnu.org>

	Fixed harmless GCC warnings in the test suite.
	* tests/include/testsuite.h (TEST_PRINTF): Renamed to...
	  (CHOP_TEST_PRINTF): New.
	  Use `_CHOP_UNUSED' when needed.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-53

	Guile: Use Autoconf-generated `inline' instead of `__inline__'.
	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-52

	Fixed harmless GCC warnings.
	* guile/*-support.c: Don't declare functions that are non-inlinable
	  (e.g., because they use `alloca ()'.)

	* guile/core-support.c (chop_scm_realloc): Cast DATA to `char *'.
	  (chop_scm_free): Likewise.

	* include/chop/block-indexers.h (chop_integer_block_fetcher_log,
	  chop_uuid_block_fetcher_log): New declarations.

	* src/buffers.c (chop_buffer_grow): Made `static'.

	* src/chop.c (chop_lookup_class_entry): New declaration.
	  (chop_integer_to_hex_string): Commented out.

	* src/filter-lzo-zip.c (chop_initialize_lzo): New declaration.

	* src/store-browser-avahi.c (chop_avahi_store_browser_open): Fixed
	  statements-before-declarations.

	* utils/chop-archiver.c (do_archive, do_retrieve): Made `static'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-51

	Better handle GCC-specific flags.
	* configure.ac: Test `$GCC' and change `CFLAGS' accordingly.

	* src/Makefile.am (AM_CFLAGS): Don't specify `-fno-strict-aliasing' et
	  al. here.

	* tests/features/Makefile.am (AM_CFLAGS): Likewise.

	* tests/interfaces/Makefile.am (AM_CFLAGS): Likewise.

	* utils/Makefile.am (AM_CFLAGS): Likewise.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-50

	Guile: Honor `HAVE_LIBUUID'.
	* guile/block-indexers-support.c (chop_uuid_block_indexer_open_alloc):
	  Return `CHOP_ERR_NOT_IMPL' when `HAVE_LIBUUID' is undefined.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-49

	Make `chop_file_stream_close ()' idempotent, which fixes a bug with Guile bindings.
	* src/stream-file.c (chop_file_stream_close): Don't `munmap'  when
	  FILE->MAP is NULL.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-172

	Make `chop_file_stream_close ()' idempotent, which fixes a bug with Guile bindings.
	* src/stream-file.c (chop_file_stream_close): Don't `munmap'  when
	  FILE->MAP is NULL.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-48

2007-09-01  Ludovic Courtes  <ludo@gnu.org>

	Fixed tiny bug in CHK index handle deserialization (mudflap).
	* src/block-indexer-chk.c (cbi_deserialize)[FETCH_NAME]: Pass "size -
	  *bytes_read" as the last arg to `memchr ()' instead of just "size".

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-171

	Fixed tiny bug in CHK index handle deserialization (mudflap).
	* src/block-indexer-chk.c (cbi_deserialize)[FETCH_NAME]: Pass "size -
	  *bytes_read" as the last arg to `memchr ()' instead of just "size".

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-47

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 147-170)

	   - Tiny doc updates.
	   - Guile: Use G-Wrap's `scm' instead of `<raw-scheme-type>'.
	   - Augmented the `filters' test.
	   - Fixed memory management error in `logs.c'.
	   - Guile: Wrapped `filter-log'.
	   - Use Gnulib's `vasprintf' module.
	   - Put Gnulib's `config.h' in the right directory.
	   - Small `chop-block-server' improvements.
	   - Use Gnulib's `strcase'.
	   - Added support for Unix-socket SunRPC block stores.
	   - Use Gnulib's <sys/socket.h>.
	   - anchor-based chopper: Slight optimization.
	   - chop-openpgp-tool: Added `--key-usage'.
	   - tests: Added debugging output to `stream-indexing'.
	   - Guile: Added basic support for libchop classes as SMOBs.
	   - Guile: Tiny `stores' fix.
	   - Guile: Added basic support for generic serialization.
	   - Guile: Removed useless `scm_gc_protect_object ()' calls.
	   - Guile: Changed `index-handle-ascii-deserialize' to take a class.
	   - Guile: Added support for streams-as-port.
	   - tests: Properly initialize input data.
	   - Properly initialize gcrypt.
	   - block-indexer-chk: Made more robust.
	   - configure: Use `pkg-config' for TDB.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-46

2007-08-28  Ludovic Court`es  <ludovic.courtes@laas.fr>

	configure: Use `pkg-config' for TDB.
	* configure.ac: Use `PKG_CHECK_MODULES' for TDB.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-170

2007-08-27  Ludovic Court`es  <ludovic.courtes@laas.fr>

	block-indexer-chk: Made more robust.
	* src/block-indexer-chk.c (chk_index_block): Add an assertion.  Better
	  handle errors after `chop_cipher_set_key ()' and `chop_cipher_encrypt ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-169

	Properly initialize gcrypt.
	* include/chop/cipher.h (_chop_cipher_init): New.

	* src/chop.c: Undefine `USE_OBJECT_TRACKER' by default.
	  (chop_init): Invoke `_chop_cipher_init ()'.

	* src/cipher.c (_chop_cipher_init): New.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-168

2007-08-22  Ludovic Court`es  <ludovic.courtes@laas.fr>

	tests: Properly initialize input data.
	* tests/features/stream-indexing.c: Use `test_randomize_input ()'.

	* tests/interfaces/stores.c (main): Initialize RANDOM_BYTES using
	  `test_randomize_input ()', which makes Valgrind happier.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-167

2007-08-13  Ludovic Courtes  <ludo@gnu.org>

	Guile: Added support for streams-as-port.
	* guile/streams-spec.scm (<chop-stream-type>): Removed, was unused.
	  (initializations-cg <chop-stream-wrapset>): New.
	  (stream->port): New wrapped function.

	* guile/streams-support.c: Include <stdio.h> and <fcntl.h>.
	  (gwrap_chop_stream_wct, stream_port_type, stream_port_gc_hint,
	  mark_stream_port, free_stream_port, fill_stream_port_input,
	  write_to_stream_port, make_stream_port,
	  chop_scm_init_stream_port_type): New.

	* guile/testsuite.scm (t-stream->port): New.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-166

	Guile: Changed `index-handle-ascii-deserialize' to take a class.
	* guile/block-indexers-spec.scm: Use `objects-spec'.
	  (<chop-block-indexer-wrapset>): Depend on `objects'.
	  (index-handle-ascii-deserialize): Take an index class instead of a
	  block indexer.

	* guile/block-indexers-support.c (chop_index_handle_ascii_deserialize):
	  Take HANDLE_CLASS.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-165

	Guile: Removed useless `scm_gc_protect_object ()' calls.
	* guile/core-spec.scm (unwrap-value-cg<chop-input-buffer-type>): Don't
	  call `scm_gc_protect_object ()'.
	  (post-call-arg-cg<chop-input-buffer-type>): Use
	  `scm_remember_upto_here ()' instead of `scm_gc_unprotect_object ()'.

	* guile/stores-spec.scm: Same for `<chop-block-key-type>'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-164

	Guile: Added basic support for generic serialization.
	* guile/objects-spec.scm (serial-method): New type.
	  (serialize-object/ascii, deserialize-object,
	  deserialize-object/ascii): New wrapped functions.

	* guile/objects-support.c: Use <string.h>.
	  (gwrap_chop_class_wct): New.
	  (chop_scm_serialize_object_ascii, chop_scm_deserialize_object,
	  chop_scm_deserialize_object_ascii): New.

	* guile/testsuite.scm (t-serialize): New.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-163

	Guile: Tiny `stores' fix.
	* guile/stores-support.c (chop_make_scheme_block_store): Call
	  `scm_gc_protect_object ()' on GUILE_CHOP_STORE_TYPE.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-162

2007-08-08  Ludovic Courtes  <ludo@gnu.org>

	Guile: Added support for streams-as-port.
	* guile/streams-spec.scm (<chop-stream-type>): Removed, was unused.
	  (initializations-cg <chop-stream-wrapset>): New.
	  (stream->port): New wrapped function.

	* guile/streams-support.c: Include <stdio.h> and <fcntl.h>.
	  (gwrap_chop_stream_wct, stream_port_type, stream_port_gc_hint,
	  mark_stream_port, free_stream_port, fill_stream_port_input,
	  write_to_stream_port, make_stream_port,
	  chop_scm_init_stream_port_type): New.

	* guile/testsuite.scm (t-stream->port): New.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-45

	Guile: Changed `index-handle-ascii-deserialize' to take a class.
	* guile/block-indexers-spec.scm: Use `objects-spec'.
	  (<chop-block-indexer-wrapset>): Depend on `objects'.
	  (index-handle-ascii-deserialize): Take an index class instead of a
	  block indexer.

	* guile/block-indexers-support.c (chop_index_handle_ascii_deserialize):
	  Take HANDLE_CLASS.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-44

	Guile: Removed useless `scm_gc_protect_object ()' calls.
	* guile/core-spec.scm (unwrap-value-cg<chop-input-buffer-type>): Don't
	  call `scm_gc_protect_object ()'.
	  (post-call-arg-cg<chop-input-buffer-type>): Use
	  `scm_remember_upto_here ()' instead of `scm_gc_unprotect_object ()'.

	* guile/stores-spec.scm: Same for `<chop-block-key-type>'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-43

	Guile: Added basic support for generic serialization.
	* guile/objects-spec.scm (serial-method): New type.
	  (serialize-object/ascii, deserialize-object,
	  deserialize-object/ascii): New wrapped functions.

	* guile/objects-support.c: Use <string.h>.
	  (gwrap_chop_class_wct): New.
	  (chop_scm_serialize_object_ascii, chop_scm_deserialize_object,
	  chop_scm_deserialize_object_ascii): New.

	* guile/testsuite.scm (t-serialize): New.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-42

	Guile: Tiny `stores' fix.
	* guile/stores-support.c (chop_make_scheme_block_store): Call
	  `scm_gc_protect_object ()' on GUILE_CHOP_STORE_TYPE.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-41

	Guile: Added basic support for libchop classes as SMOBs.
	* guile/Makefile.am (binding_specs): Added `objects-spec.scm'.
	  (support_c_files): Added `objects-support.c'.
	  (libguile_chop_la_SOURCES): Added `objects.c'.

	* guile/testsuite.scm: Use `(chop objects)'.
	  (t-class): New.
	  (test-suite): Use it.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-161

	tests: Added debugging output to `stream-indexing'.
	* tests/features/stream-indexing.c (test_configuration): Added the dummy
	  block store's log when debugging.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-160

	chop-openpgp-tool: Added `--key-usage'.
	* utils/chop-openpgp-tool.c (options)[key-usage]: New.
	  (parse_opt): Handle it.
	  (show_pubkey_usage): New.
	  (main): Handle it.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-159

	anchor-based chopper: Slight optimization.
	* src/chopper-anchor-based.c (sliding_window_unfull): Turned into a
	  macro.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-158

	Use Gnulib's <sys/socket.h>.
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-157

	Added support for Unix-socket SunRPC block stores.
	* include/chop/stores.h (chop_sunrpc_block_store_open): Updated comment.

	* src/store-sunrpc.c: Include <sys/socket.h> and <sys/un.h>.  Define
	  `UNIX_PATH_MAX' if needed.
	  (sunrpc_block_store_open): Support "unix" as PROTOCOL.

	* utils/chop-archiver.c (options)[remote, protocol]: Updated docstring.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-156

	Use Gnulib's `strcase'.
	* m4/gnulib-cache.m4: Added `strcase'.

	* src/store-sunrpc.c: Include <string.h> to get Gnulib's `strncasecmp ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-155

2007-08-07  Ludovic Courtes  <ludo@gnu.org>

	Guile: Added basic support for libchop classes as SMOBs.
	* guile/Makefile.am (binding_specs): Added `objects-spec.scm'.
	  (support_c_files): Added `objects-support.c'.
	  (libguile_chop_la_SOURCES): Added `objects.c'.

	* guile/testsuite.scm: Use `(chop objects)'.
	  (t-class): New.
	  (test-suite): Use it.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-40

	tests: Added debugging output to `stream-indexing'.
	* tests/features/stream-indexing.c (test_configuration): Added the dummy
	  block store's log when debugging.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-39

	chop-openpgp-tool: Added `--key-usage'.
	* utils/chop-openpgp-tool.c (options)[key-usage]: New.
	  (parse_opt): Handle it.
	  (show_pubkey_usage): New.
	  (main): Handle it.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-38

	anchor-based chopper: Slight optimization.
	* src/chopper-anchor-based.c (sliding_window_unfull): Turned into a
	  macro.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-37

2007-07-30  Ludovic Courtes  <ludo@gnu.org>

	Use Gnulib's <sys/socket.h>.
	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-36

	Added support for Unix-socket SunRPC block stores.
	* include/chop/stores.h (chop_sunrpc_block_store_open): Updated comment.

	* src/store-sunrpc.c: Include <sys/socket.h> and <sys/un.h>.  Define
	  `UNIX_PATH_MAX' if needed.
	  (sunrpc_block_store_open): Support "unix" as PROTOCOL.

	* utils/chop-archiver.c (options)[remote, protocol]: Updated docstring.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-35

	Use Gnulib's `strcase'.
	* m4/gnulib-cache.m4: Added `strcase'.

	* src/store-sunrpc.c: Include <string.h> to get Gnulib's `strncasecmp ()'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-34

2007-07-24  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Small `chop-block-server' improvements.
	* utils/chop-block-server.c (handle_write_block): In the
	  `!no_collision_check' case, don't run `write_block' when the block is
	  already in, and ignore `read_block' failures.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-154

	Small `chop-block-server' improvements.
	* utils/chop-block-server.c (handle_write_block): In the
	  `!no_collision_check' case, don't run `write_block' when the block is
	  already in, and ignore `read_block' failures.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-33

2007-07-19  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Put Gnulib's `config.h' in the right directory.
	* configure.ac: When invoking `AC_CONFIG_LINKS', use `lib/config.h' as
	  the target.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-153

	Use Gnulib's `vasprintf' module.
	* configure.ac: Don't look for `vasprintf'.
	  Create a link from `include/chop/chop-config.h' to
	  `include/chop/config.h' so that Gnulib modules are happy.

	* guile/logs-support.c (scm_log_printf): Removed `#ifdef
	  __GNU_LIBRARY__'.

	* include/chop/.arch-inventory: Added `config.h' as precious.

	* m4/.arch-inventory: Updated.

	* m4/gnulib-cache.m4: New `vasprintf' module.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-152

2007-07-18  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Put Gnulib's `config.h' in the right directory.
	* configure.ac: When invoking `AC_CONFIG_LINKS', use `lib/config.h' as
	  the target.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-32

	Use Gnulib's `vasprintf' module.
	* configure.ac: Don't look for `vasprintf'.
	  Create a link from `include/chop/chop-config.h' to
	  `include/chop/config.h' so that Gnulib modules are happy.

	* guile/logs-support.c (scm_log_printf): Removed `#ifdef
	  __GNU_LIBRARY__'.

	* include/chop/.arch-inventory: Added `config.h' as precious.

	* m4/.arch-inventory: Updated.

	* m4/gnulib-cache.m4: New `vasprintf' module.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-31

2007-07-17  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Guile: Wrapped `filter-log'.
	* guile/filters-spec.scm: Use `logs-spec'.
	  (filter-log): New wrapped function.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-151

	Fixed memory management error in `logs.c'.
	* src/logs.c (chop_log_builtin_printf): Free STR using `free ()' instead
	  of `chop_free ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-150

	Augmented the `filters' test.
	* tests/interfaces/filters.c (ITERATIONS_PER_FILTER): New.
	  (test_filter): Iterate `ITERATIONS_PER_FILTER' times over each filter
	  to make sure zip filters are re-usable and deterministic.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-149

	Guile: Wrapped `filter-log'.
	* guile/filters-spec.scm: Use `logs-spec'.
	  (filter-log): New wrapped function.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-30

	Fixed memory management error in `logs.c'.
	* src/logs.c (chop_log_builtin_printf): Free STR using `free ()' instead
	  of `chop_free ()'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-29

	Augmented the `filters' test.
	* tests/interfaces/filters.c (ITERATIONS_PER_FILTER): New.
	  (test_filter): Iterate `ITERATIONS_PER_FILTER' times over each filter
	  to make sure zip filters are re-usable and deterministic.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-28

2007-07-03  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Guile: Use G-Wrap's `scm' instead of `<raw-scheme-type>'.
	* guile/core-spec.scm (<chop-raw-scheme-type>): Removed.

	* guile/*-spec.scm: Use G-Wrap's built-in `scm' instead of
	  `<raw-scheme-type>'.  This fixes a few compiler warnings.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-148

	Guile: Use G-Wrap's `scm' instead of `<raw-scheme-type>'.
	* guile/core-spec.scm (<chop-raw-scheme-type>): Removed.

	* guile/*-spec.scm: Use G-Wrap's built-in `scm' instead of
	  `<raw-scheme-type>'.  This fixes a few compiler warnings.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-27

2007-07-02  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Tiny doc updates.
	* README: Mention LZO as a dependency.

	* src/filter-lzo-zip.c: Added comment about potential licencing issue
	  with LZO version 2.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-147

	Tiny doc updates.
	* README: Mention LZO as a dependency.

	* src/filter-lzo-zip.c: Added comment about potential licencing issue
	  with LZO version 2.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-26

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 143-146)

	   - Added an "integer" block indexer.
	   - Use Gnulib's `stdint'.
	   - Updated Guile bindings for block-indexers.
	   - Minor fixes in `block-indexer-{uuid,integer}'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-25

2007-06-29  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Minor fixes in `block-indexer-{uuid,integer}'.
	* src/block-indexer-integer.c (iih_serialize): Check error codes from
	  `chop_buffer_push ()'.
	  (iih_deserialize): Destroy OBJECT upon failure.  Initialize
	  `iih->index_handle.size' on success.

	* src/block-indexer-uuid.c: Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-146

2007-06-29  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Updated Guile bindings for block-indexers.
	* guile/block-indexers-spec.scm (integer-block-indexer-open): New.

	* guile/block-indexers-support.c: Include <chop/chop-config.h>.
	  Replaced `__inline__' by `inline'.
	  (chop_integer_block_indexer_open_alloc): New.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-145

	Use Gnulib's `stdint'.
	* m4/gnulib-cache.m4: Added `stdint'.

	* src/block-indexer-integer.c: Use <stdint.h>.  Use `uint32_t' instead of
	  `unsigned int'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-144

	Added an "integer" block indexer.
	* include/chop/block-indexers.h: Updated.

	* src/Makefile.am (libchop_la_SOURCES): Added `block-indexer-integer.c'.

	* src/chop.c: Updated.

	* tests/features/stream-indexing.c: Updated.

	* tests/interfaces/block-indexers.c: Updated.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-143

	Updated Guile bindings for block-indexers.
	* guile/block-indexers-spec.scm (integer-block-indexer-open): New.

	* guile/block-indexers-support.c: Include <chop/chop-config.h>.
	  Replaced `__inline__' by `inline'.
	  (chop_integer_block_indexer_open_alloc): New.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-24

	Use Gnulib's `stdint'.
	* m4/gnulib-cache.m4: Added `stdint'.

	* src/block-indexer-integer.c: Use <stdint.h>.  Use `uint32_t' instead of
	  `unsigned int'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-23

	Added an "integer" block indexer.
	* include/chop/block-indexers.h: Updated.

	* src/Makefile.am (libchop_la_SOURCES): Added `block-indexer-integer.c'.

	* src/chop.c: Updated.

	* tests/features/stream-indexing.c: Updated.

	* tests/interfaces/block-indexers.c: Updated.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-22

2007-06-28  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 133-142)

	   - Guile: Use `scm_gc_malloc ()' to help the GC.
	   - Implemented custom allocators for zip/unzip filters.
	   - Adding missing zip/unzip filter custom allocator changes.
	   - Guile bindings: Use custom allocator for zip/unzip filters.
	   - Added a general customizable libchop allocator.
	   - Small cleanups.
	   - Fixed various build glitches.
	   - Fixed various things in the object tracker.
	   - Fixed object leaks in the tree stream indexer.
	   - Fixed various object leaks in the test suite.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-21

2007-06-28  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed various object leaks in the test suite.
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-142

	Fixed object leaks in the tree stream indexer.
	* src/indexer-tree.c (chop_block_tree_flush): Destroy ROOT_INDEX at the
	  beginning of the loop.
	  (chop_tree_index_blocks): Destroy the previous INDEX within the loop.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-141

	Fixed various things in the object tracker.
	* src/chop.c (chop_tracked_object_t)[object]: Removed.
	  [klass, object_address]: New fields.
	  (chop_untracked_object_t): New.
	  (recently_untracked): Use it.
	  (chop_object_tracker_init): Initialize `recently_untracked'.
	  Updated callers and users.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-140

	Fixed various build glitches.
	* guile/Makefile.am (xxx_LIBADD): Specify the whole path of `.la'
	  archives rather than using `-l' and `-L'.

	* src/Makefile.am (EXTRA_DIST): Added `filter-lzo-common.c'.
	  (xxx_LIBADD): Specify whole archive path.
	  (rpc_headers): Use `$(top_builddir)' for generated header.
	  (chop-errors.h): Move to `$(top_builddir)/include'.

	* tests/features/Makefile.am (LDADD): Replaced by...
	  (LIBS): Use whole archive paths.

	* tests/interfaces/Makefile.am: Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-139

	Small cleanups.
	* guile/testsuite.scm: Removed obsolete comment.

	* include/chop/streams.h: Removed stuff about ext2.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-138

	Added a general customizable libchop allocator.
	This partly reverts the 3 previous patches and it yields much better
	memory usage under Guile...

	* guile/core-spec.scm (initializations-cg): Use `chop_init_with_allocator ()'.

	* guile/core-support.c (alloc_header_t, chop_scm_malloc,
	  chop_scm_realloc, chop_scm_free): New.

	* guile/core-support.h: Updated.

	* guile/filters-support.c: Removed custom allocator code.

	* include/chop/chop.h (chop_malloc_t, chop_realloc_t, chop_free_t,
	  chop_init_with_allocator, chop_internal_malloc, chop_internal_realloc,
	  chop_internal_free, chop_malloc, chop_calloc, chop_strdup,
	  chop_realloc, chop_free): New.

	* include/chop/filters.h: Reverted previous changes that added per-filter
	  custom allocators.

	* include/chop/objects.h (chop_malloc_t, chop_realloc_t, chop_free_t):
	  Removed.

	* src/*.c: Use `chop_malloc ()', `chop_free ()' et al.  Updated zip/unzip
	  filters to use custom allocators for the libraries they use.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-137

	Guile bindings: Use custom allocator for zip/unzip filters.
	* guile/filters-support.c (alloc_header_t): New.
	  (chop_scm_malloc, chop_scm_realloc, chop_scm_free): New.
	  (chop_*_alloc): Use the above allocators.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-136

	Adding missing zip/unzip filter custom allocator changes.
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-135

	Implemented custom allocators for zip/unzip filters.
	* include/chop/filters.h (chop_zip_filter_class)[generic_open]: Added
	  `malloc', `realloc' and `free' parameters.
	  (chop_unzip_filter_class)[generic_open]: Likewise.
	  (chop_zip_filter_generic_open2, chop_unzip_filter_generic_open2): New.

	* include/chop/objects.h (chop_malloc_t, chop_realloc_t, chop_free_t):
	  New.

	* src/filter-*.c: Use them.

	--This line, and those below, will be ignored--
	Files to commit:
	   src/filter-zlib-zip.c
	   include/chop/objects.h
	   include/chop/filters.h
	   src/filter-zlib-unzip.c
	   src/filter-zip-push-pull.c
	   src/filter-bzip2-unzip.c
	   src/filter-lzo-common.c
	   src/filter-bzip2-zip.c
	   src/filter-lzo-zip.c
	   src/filter-lzo-unzip.c
	   guile/filters-support.c

	This list might be incomplete or outdated if editing the log
	message was not invoked from an up-to-date changes buffer!

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-134

2007-06-28  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Guile: Use `scm_gc_malloc ()' to help the GC.
	* guile/core-support.c (gwrap_chop_object_cleanup): Use `gwrap_chop_free
	  ()' instead of `chop_object_destroy ()' + `free ()'.

	* guile/core-support.h: Include <chop/chop-config.h>.
	  (gwrap_chop_malloc, gwrap_chop_free, gwrap_chop_free_uninitialized):
	  New.

	* guile/*-support.c: Use `gwrap_chop_malloc ()' and
	  `gwrap_chop_free{,_uninitialized} ()' instead of `scm_malloc ()' and
	  `free ()'.

	* guile/testsuite.scm: Don't run in debug mode since that may lead to the
	  failure of `t-aggregated-objects'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-133

	Guile: Use `scm_gc_malloc ()' to help the GC.
	* guile/core-support.c (gwrap_chop_object_cleanup): Use `gwrap_chop_free
	  ()' instead of `chop_object_destroy ()' + `free ()'.

	* guile/core-support.h: Include <chop/chop-config.h>.
	  (gwrap_chop_malloc, gwrap_chop_free, gwrap_chop_free_uninitialized):
	  New.

	* guile/*-support.c: Use `gwrap_chop_malloc ()' and
	  `gwrap_chop_free{,_uninitialized} ()' instead of `scm_malloc ()' and
	  `free ()'.

	* guile/testsuite.scm: Don't run in debug mode since that may lead to the
	  failure of `t-aggregated-objects'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-20

2007-06-27  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 131-132)

	   - Updated Guile bindings for filters.
	   - Guile test suite: Added a new test.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-19

2007-06-27  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Guile test suite: Added a new test.
	* guile/testsuite.scm (%stress-loop-count): Decreased from 700 to 500.
	  (%uz, %z): Removed.
	  (t-aggregated-objects): New test.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-132

2007-06-23  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Updated Guile bindings for filters.
	* guile/filters-spec.scm (zip-compression-level/default, zip-filter-init,
	  unzip-filter-init): New.

	* guile/filters-support.c: Include <chop/chop-config.h>.  Use `inline'
	  instead of `__inline__'.
	  (chop_generic_zip_filter_open_alloc,
	  chop_generic_unzip_filter_open_alloc): New.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-131

	Updated Guile bindings for filters.
	* guile/filters-spec.scm (zip-compression-level/default, zip-filter-init,
	  unzip-filter-init): New.

	* guile/filters-support.c: Include <chop/chop-config.h>.  Use `inline'
	  instead of `__inline__'.
	  (chop_generic_zip_filter_open_alloc,
	  chop_generic_unzip_filter_open_alloc): New.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-18

2007-06-22  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 125-130)

	   - First working version of LZO filters.
	   - Updated tests for LZO.
	   - LZO filters: Encode the in/out integers in a host-neutral endianness.
	   - Use Gnulib's `arpa_inet' module.
	   - Use Gnulib's `malloc'.
	   - Small LZO cleanups.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-17

2007-06-22  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Small LZO cleanups.
	* include/chop/filters.h: Declared LZO filter initializers.

	* src/filter-lzo-unzip.c: Use `lzo_bytep' instead of `char *' for
	  `input_buffer' and `output_buffer'.

	* src/filter-lzo-zip.c: Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-130

	Use Gnulib's `malloc'.
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-129

	Use Gnulib's `arpa_inet' module.
	* m4/gnulib-cache.m4: Use `arpa_inet' (LGPL).

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-128

	LZO filters: Encode the in/out integers in a host-neutral endianness.
	* src/filter-lzo-unzip.c: Include <arpa/inet.h>.
	  (chop_lzo_unzip_pull): Use `ntohl ()'.

	* src/filter-lzo-zip.c: Include <arpa/inet.h>.
	  (chop_lzo_zip_pull): Use `htonl ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-127

	Updated tests for LZO.
	* tests/features/filter-zip.c (handle_zipped_input_fault): Handle the LZO
	  case.
	  (main)[implementations]: Added the LZO zip/unzip classes.

	* tests/features/stream-filtered.c (main)[implementations]: Added the LZO
	  zip/unzip classes.

	* tests/features/filters.c (main)[implementations]: Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-126

	First working version of LZO filters.
	* include/chop/filters.h (chop_lzo_zip_filter_class): New.
	  (chop_lzo_unzip_filter_class): New.

	* src/Makefile.am (libchop_la_SOURCES): Add `filter-lzo-{un,}zip.c' when
	  `HAVE_LZO'.

	* src/filter-lzo-common.c (ZIP_FILTER_CTOR, ZIP_FILTER_DTOR): New.
	  (ZIP_PUSH_METHOD): Fixed.

	* src/filter-lzo-unzip.c: Reworked and fixed.

	* src/filter-lzo-zip.c: Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-125

2007-06-19  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 124)

	   - Preparing support for LZO (not even compilable!).

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-16

2007-06-19  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Preparing support for LZO (not even compilable!).
	* configure.ac: Check for LZO.

	* src/Makefile.am (EXTRA_DIST): Added `filter-lzo-{,un}zip.c' and
	  `filter-lzo-common.c'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-124

2007-06-18  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 119-123)

	   - filter-bzip2-zip: Improved the bzip2-specific API.
	   - filter-zip-push-pull: Better error reporting.
	   - filter-bzip2-unzip: Fixed and improved bzip2-specific API.
	   - chop-archiver: Added generic support for zip/unzip filter classes.
	   - chop-block-server: Added generic support for zip/unzip filter classes.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-15

2007-06-18  Ludovic Court`es  <ludovic.courtes@laas.fr>

	chop-block-server: Added generic support for zip/unzip filter classes.
	* utils/Makefile.am (EXTRA_DIST): Added `zip-helper.c'.

	* utils/chop-archiver.c (get_zip_filter_classes): Moved to
	  `zip-helper.c'; include it.
	  Use `CHOP_ZIP_FILTER_DEFAULT_COMPRESSION' instead of `-1'.

	* utils/chop-block-server.c (use_zlib_filters): Removed.
	  (zip_filter_class, unzip_filter_class): New.
	  (options)[zip]: Take an optional argument.
	  Include "zip-helper.c".
	  (main): Updated to account for ZIP_FILTER_CLASS and UNZIP_FILTER_CLASS.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-123

	chop-archiver: Added generic support for zip/unzip filter classes.
	* utils/chop-archiver.c (use_zlib_block_filters,
	  use_zlib_stream_filters): Removed.
	  (zip_block_filter_class, unzip_block_filter_class,
	  zip_stream_filter_class, unzip_stream_filter_class): New.
	  (options): Updated `-Z' and `-z'.
	  (do_retrieve): Account for the new params.
	  (get_zip_filter_classes): New.
	  (parse_opt): Initialize the filter classes.
	  (main): Account for the new filter class parameters.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-122

	filter-bzip2-unzip: Fixed and improved bzip2-specific API.
	* include/chop/filters.h (chop_bzip2_unzip_filter_init): Added the
	  `small' parameter.

	* src/filter-bzip2-unzip.c (chop_bzip2_unzip_filter_t)[small]: New field.
	  (chop_bzip2_unzip_filter_init): Use `small'.
	  (ZIP_NEED_MORE_INPUT): Fixed.
	  (ZIP_RESET_PROCESSING): Call `BZ2_bzDecompressInit ()', which fixes a
	  bug when re-using a filter.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-121

	filter-zip-push-pull: Better error reporting.
	* src/filter-zip-push-pull.c: Report errors when ZRET is not `ZIP_OK' as
	  a last resort.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-120

	filter-bzip2-zip: Improved the bzip2-specific API.
	* include/chop/filters.h: Updated.

	* src/filter-bzip2-zip.c
	  (chop_bzip2_zip_filter_t)[bzip2_compression_level]: Removed.
	  [block_count_100k, work_factor]: New fields.
	  (bzf_open): Convert COMPRESSION_LEVEL.
	  (chop_bzip2_zip_filter_init): New `block_count_100k' and `work_factor'
	  arguments; removed `bzip2_compression_level'.
	  (ZIP_RESET_PROCESSING): Pass the right arguments to `BZ2_bzCompressInit ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-119

2007-06-17  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 104-118)

	   - Use Gnulib for `alloca'.
	   - More Gnulib `alloca' stuff.
	   - More build tweaks: `distcheck' works.
	   - More build tweaks.
	   - Tiny makefile fix.
	   - Build fixes on the Guile side.
	   - Updated the TDB block store.
	   - Fixed `extract-classes.sh' to handle names with digits.
	   - Implemented bzip2 zip/unzip filters.
	   - Augmented the `stream-filtered' test to handle bzip2.
	   - Check for `inline' and <stdarg.h>.
	   - test-suite: Factorized `randomize_input ()'.
	   - zlib/bzip2 filters: Fixed buffer signedness issues.
	   - Implemented a generic zip/unzip creation API.
	   - Updated zip/unzip filter tests.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-14

2007-06-15  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Updated zip/unzip filter tests.
	* tests/features/filter-zip.c (zip_filter_init_t, unzip_filter_init_t):
	  Removed.
	  (zip_implementation_t): Removed `zip_init' and `unzip_init'.
	  (main)[implementations]: Updated.
	  Use the `chop_{un,}zip_generic_open ()'.

	* tests/features/stream-filtered.c: Likewise.

	* tests/interfaces/filters.c: Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-118

	Implemented a generic zip/unzip creation API.
	* include/chop/filters.h (chop_zip_filter_class_t,
	  chop_unzip_filter_class_t): New.
	  (CHOP_ZIP_FILTER_DEFAULT_COMPRESSION): New.
	  (chop_zip_filter_generic_open, chop_unzip_filter_generic_open): New.
	  (chop_{zlib,bzip2}_{zip,unzip}_filter_class): Changed types.

	* src/filter-bzip2-unzip.c (chop_bzip2_unzip_filter_class): Use
	  `chop_unzip_filter_class' as the meta-class.
	  (buf_open): New.

	* src/filter-bzip2-zip.c: Likewise.

	* src/filter-zlib-unzip.c: Likewise.

	* src/filter-zlib-zip.c: Likewise.

	* src/filters.c (chop_zip_filter_class, chop_unzip_filter_class): New.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-117

	zlib/bzip2 filters: Fixed buffer signedness issues.
	* src/filter-bzip2-unzip.c (ZIP_BUFFER_TYPE): New macro.
	  (ZIP_RESET_PROCESSING): Fixed.

	* src/filter-zlib-unzip.c: Likewise.

	* src/filter-zlib-zip.c: Likewise.

	* src/filter-zip-push-pull.c: When assigning `next_in' or `next_out',
	  cast the RHS expression to `(ZIP_BUFFER_TYPE *)'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-116

	test-suite: Factorized `randomize_input ()'.
	* tests/features/chopper-anchor-based.c (randomize_input): Removed.
	  (main): Use `test_randomize_input ()' instead.

	* tests/features/filter-zip.c: Likewise.

	* tests/features/stream-filtered.c: Likewise.

	* tests/include/testsuite.h: Include <chop/chop-config.h>.  Include
	  <stdarg.h> when `HAVE_STDARG_H'.  Changed all `__inline__' to `inline'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-115

	Check for `inline' and <stdarg.h>.
	* configure.ac: Check for `inline' and <stdarg.h>.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-114

	Augmented the `stream-filtered' test to handle bzip2.
	* tests/features/stream-filtered.c (randomize_input): New.
	  (zip_filter_init_t, unzip_filter_init_t, zip_implementation_t): New.
	  (main): Iterate over implementations.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-113

	Implemented bzip2 zip/unzip filters.
	Actually, this is a commit message for the previous patch!

	* configure.ac: Detect `libbz2'.

	* include/chop/filters.h (chop_bzip2_zip_filter_class,
	  chop_bzip2_unzip_filter_class, chop_bzip2_zip_filter_init,
	  chop_bzip2_unzip_filter_init): New.

	* src/Makefile.am (libchop_la_SOURCES): Added
	  `filter-bzip2-{zip,unzip}.c' when `HAVE_LIBBZ2'.

	* src/filter-zip-push-pull.c: Improved debugging output.  Use new macro
	  `ZIP_STREAM_ENDED ()' instead of `ZIP_STREAM_END'.

	* src/filter-zlib-unzip.c (ZIP_STREAM_END): Removed.
	  (ZIP_STREAM_ENDED): New macro.

	* src/filter-zlib-zip.c: Likewise.

	* tests/features/Makefile.am (check_PROGRAMS): Renamed `filter-zlib' to
	  `filter-zip'.

	* tests/features/filter-zip.c: Include <chop/chop-config.h>.
	  (zipped_input_fault_handler_data_t): New.
	  (handle_zipped_input_fault): Use a `zipped_input_fault_handler_data_t',
	  handle the bzip2 case.
	  [flushing]: Removed this static variable.
	  (zip_filter_init_t, unzip_filter_init_t, zip_implementation_t): New.
	  (main)[implementations]: New.  Iterate over them.

	* tests/interfaces/filters.c: Don't include <assert.h>.
	  (zipped_input, unzipped_output): Made larger than INPUT.
	  (randomize_input): New.
	  (test_filter): Only test for `PULLED == 0' when `CHOP_FILTER_EMPTY' is
	  returned.
	  (zip_filter_init_t, unzip_filter_init_t, zip_implementation_t): New.
	  (main)[implementations]: New.  Iterate over them.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-112

	Fixed `extract-classes.sh' to handle names with digits.
	* src/extract-classes.sh: Handle class name with digits.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-111

2007-05-23  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Updated the TDB block store.
	* src/store-generic-db.c (TYPE_OF): New macro.
	  Cast all arguments to `chop_buffer_push ()' et al. to `char *' to avoid
	  signedness issues (TDB switched to using `unsigned char').

	* src/store-tdb.c (show_message): Updated.
	  (chop_tdb_store_open): On error, if ERRNO is zero, return
	  `CHOP_INVALID_ARG' (this fixes a bug where failed opens would be
	  silently ignored, eventually leading to a crash).  Use
	  `tdb_set_logging_function ()'  instead of `tdb_logging_function ()';
	  updated arguments.
	  (CHOP_KEY_TO_DB): Cast the return value of `chop_block_key_buffer ()'
	  to `unsigned char *'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-110

2007-05-21  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Build fixes on the Guile side.
	* guile/Makefile.am (GUILE, G_WRAP_CONFIG): Removed (automatically
	  added).
	  (AM_CPPFLAGS): Fixed.
	  (LIBS): Fixed.
	  (TESTS_ENVIRONMENT): Use `$(top_builddir)/guile' rather than
	  `$(builddir)'.

	* guile/testsuite.scm: Use `srfi-1'.
	  (testsuite): Try hard to find an input file.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-109

	Tiny makefile fix.
	* src/Makefile.am (AM_CPPFLAGS): Really added `$(top_builddir)/include'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-108

	More build tweaks.
	* */Makefile.am (AM_CPPFLAGS): Added `-I$(top_builddir)/include', needed
	   for `chop-config.h'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-107

	More build tweaks: `distcheck' works.
	* src/Makefile.am (CLEANFILES): New.

	* tests/interfaces/Makefile.am (distclean-local): New target.

	* tests/features/Makefile.am (distclean-local): New target.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-106

	More Gnulib `alloca' stuff.
	* *.c: Include <alloca.h>.

	* tests/interfaces/Makefile.am (AM_CPPFLAGS): Added `lib'.
	  (LDADD): Likewise.

	* utils/Makefile.am: Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-105

	Use Gnulib for `alloca'.
	* .arch-inventory: Mark `lib' as precious.

	* Makefile.am (SUBDIRS): Added `lib'.
	  (AUTOMAKE_OPTIONS, ACLOCAL_AMFLAGS): New.

	* configure.ac: Invoke `gl_EARLY' and `gl_INIT'.  Produce `lib/Makefile'.

	* m4/.arch-inventory: Make sure `gnulib-cache.m4' is kept.

	* src/Makefile.am (AM_CPPFLAGS): Added `-I' for gnulib.
	  (libchop_la_LIBADD): Added `-lgnu'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-104

2007-05-17  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 98-103)

	   - Small `sunrpc-tls' fixes.
	   - Fixed libs needed by `libchop-block-server'.
	   - Added Guile bindings for store publishers.
	   - store-publisher-avahi: Actually publish the OpenPGP fingerprint.
	   - Added `AUTHORS' and `NEWS'.
	   - Cosmetic change in `chop-block-server'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-13

2007-05-16  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Cosmetic change in `chop-block-server'.
	* utils/chop-block-server.c (publish_service): Attach the publisher's log
	  when VERBOSE.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-103

	Added `AUTHORS' and `NEWS'.
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-102

	store-publisher-avahi: Actually publish the OpenPGP fingerprint.
	* src/store-publisher-avahi.c (create_services): Actually publish the
	  OpenPGP fingerprint.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-101

2007-05-15  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Added Guile bindings for store publishers.
	* guile/Makefile.am (lib_LTLIBRARIES): Added
	  `libguile-chop-block-server.la'.
	  (binding_specs): Added `block-server-spec.scm'.
	  (libguile_chop_block_server_la_SOURCES,
	  libguile_chop_block_server_la_LIBADD): New.
	  (support_c_files): Added `block-server-support.c'.

	* guile/pre-inst-guile.in: Dlopen `builddir/src/libchop.la' too.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-100

	Fixed libs needed by `libchop-block-server'.
	* src/Makefile.am (libchop_block_server_la_LIBS): Renamed to
	  `libchop_block_server_la_LIBADD', which actually does the job.
	  (AM_CPPFLAGS): Use `$(top_srcdir)/include' instead of `../include'.
	  (AM_CFLAGS): Removed `-O0 -g'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-99

	Small `sunrpc-tls' fixes.
	* src/sunrpc-tls.c (clnttls_create): Initialize `ct->ct_closeit' to
	  `TRUE'.
	  (clnt_readtls): Commented out `milliseconds'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-98

	Added Guile bindings for store publishers.
	* guile/Makefile.am (lib_LTLIBRARIES): Added
	  `libguile-chop-block-server.la'.
	  (binding_specs): Added `block-server-spec.scm'.
	  (libguile_chop_block_server_la_SOURCES,
	  libguile_chop_block_server_la_LIBADD): New.
	  (support_c_files): Added `block-server-support.c'.

	* guile/pre-inst-guile.in: Dlopen `builddir/src/libchop.la' too.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-12

	Fixed libs needed by `libchop-block-server'.
	* src/Makefile.am (libchop_block_server_la_LIBS): Renamed to
	  `libchop_block_server_la_LIBADD', which actually does the job.
	  (AM_CPPFLAGS): Use `$(top_srcdir)/include' instead of `../include'.
	  (AM_CFLAGS): Removed `-O0 -g'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-11

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 90-97)

	   - TLS block store: Don't load RSA parameters.
	   - chop-archiver: Don't load/generate RSA/DH parameters.
	   - chop-archiver: Use `chop_sunrpc_tls_block_store_simple_open ()'.
	   - Slight Guile binding changes.
	   - Hopefully fixed the RPC build mess.
	   - Fixed minor build glitches (some remain).
	   - Generalized the block-server publishing interface.
	   - Cosmetic file renaming.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-10

2007-05-15  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Cosmetic file renaming.
	* src/Makefile.am (libchop_block_server_la_SOURCES): Renamed
	  `store-server.c' to `block-server.c' for consistency.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-97

	Generalized the block-server publishing interface.
	* include/chop/block-server.h: Include "logs.h", "objects.h" and
	  "store-browsers.h".
	  (chop_store_publisher_t): New type.
	  (chop_store_publisher_iterate, chop_store_publisher_loop,
	  chop_avahi_store_publisher_class, chop_avahi_store_publisher_open,
	  chop_avahi_store_publisher_log): New.

	* src/Makefile.am (libchop_block_server_la_SOURCES): Added
	  `store-publisher-avahi.c' when `HAVE_AVAHI'.

	* src/store-publisher-avahi.c: Generalized version of former
	  `utils/avahi-publish.c'.

	* src/store-server.c (publisher_ctor, publisher_dtor,
	  chop_store_publisher_class, chop_store_publisher_iterate,
	  chop_store_publisher_loop): New.

	* utils/Makefile.am (EXTRA_DIST): Removed `avahi-publish.c'.

	* utils/chop-block-server.c: Don't include "avahi-publish.c".
	  (publishing_thread_entry_point, publish_service): New.
	  (main): Use them.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-96

	Fixed minor build glitches (some remain).
	* src/Makefile.am (class-lookup.c): Specify the full path of
	  `extract-classes.sh'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-95

	Hopefully fixed the RPC build mess.
	* src/Makefile.am (block_rstore.h): Build it locally, in `$(builddir)'.
	  (block_rstore_*.c): Depend on it.  Feed the `.x' on stdin rather than
	  as a command-line argument so that generated files don't do
	  #include "../rpc/block_rstore.h".

	* src/store-server.c: Removed the "../rpc/" in #include directive.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-94

	Slight Guile binding changes.
	* guile/stores-spec.scm (sunrpc/tls-block-store-open): Renamed to
	  `sunrpc/tls-block-store-simple-open'.

	* guile/stores-support.c (chop_sunrpc_tls_block_store_open_alloc):
	  Renamed to `chop_sunrpc_tls_block_store_simple_open_alloc'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-93

	chop-archiver: Use `chop_sunrpc_tls_block_store_simple_open ()'.
	* utils/chop-archiver.c: Don't include <chop/store-sunrpc-tls.h>.
	  (info, client_anoncred, client_certcred, initialize_tls_parameters,
	  initialize_tls_session): Removed.
	  (main): Use `chop_sunrpc_tls_block_store_simple_open ()' instead of
	  `chop_sunrpc_tls_block_store_open ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-92

	chop-archiver: Don't load/generate RSA/DH parameters.
	* utils/Makefile.am (chop_archiver_SOURCES): Removed `gnutls-helper.c'.

	* utils/chop-archiver.c (CONFIG_TLS_DH_PARAMS, CONFIG_TLS_DH_PARAMS,
	  client_dh_params, client_rsa_params): Removed.
	  (initialize_tls_parameters): Don't use RSA/DH parameters.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-91

	TLS block store: Don't load RSA parameters.
	* src/store-sunrpc.c (make_default_tls_session): Don't generate RSA
	  parameters, not needed on the client side.

	* include/chop/stores.h: Updated comment for
	  `chop_sunrpc_tls_block_store_simple_open ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-90

2007-05-02  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Small `sunrpc-tls' fixes.
	* src/sunrpc-tls.c (clnttls_create): Initialize `ct->ct_closeit' to
	  `TRUE'.
	  (clnt_readtls): Commented out `milliseconds'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-9

2007-04-21  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 78-89)

	   - sunrpc-tls: Handle `RPC_ANYSOCK' and fill out the `xp_port' field.
	   - sunrpc-tls: Added `svctls_getsession ()'.
	   - sunrpc-tls: Added a session finalizer (server-side).
	   - chop-block-server: Display caller information, use TLS finalizer.
	   - chop-archiver: Cosmetic changes.
	   - Updated `configure.ac', disabled D-BUS stuff by default.
	   - Fixed the build system for Guile bindings.
	   - Fixed a series of build glitches.  Packing up for Laurent & Isa.
	   - Sun/ONC RPC interface: Use octet arrays rather than `char' arrays.
	   - Improved `chop-openpgp-tool'.
	   - Minor fixes in the store-browsers and block server.
	   - Guile bindings: Minor fixes (store-browsers and logs).

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-8

2007-02-28  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Guile bindings: Minor fixes (store-browsers and logs).
	* guile/logs-support.c (chop_log_attach_to_port): Make sure PORT is a
	  file port; don't invoke `scm_fsync ()'.

	* guile/store-browsers-spec.scm: Use `(logs-spec)'.
	  (<chop-store-browser-wrapset>): Add `logs' as a dependency.
	  (avahi-store-browser-log): New wrapped function.

	* guile/store-browsers-support.c (ssb_discovery_trampoline): Only return
	  1 when RESULT is false.
	  (ssb_removal_trampoline): Likewise.
	  (chop_scm_avahi_store_browser_log): New.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-89

	Minor fixes in the store-browsers and block server.
	* src/store-browsers.c (chop_read_hash_method_spec): Initialize
	  SPEC.METHOD.

	* utils/chop-block-server.c (tls_authorizer): Issue a message when a
	  client is rejected because of a lack of OpenPGP certificate.

	--This line, and those below, will be ignored--
	Files to commit:
	   guile/logs-support.c
	   utils/chop-block-server.c
	   src/store-browsers.c
	   guile/store-browsers-support.c
	   guile/store-browsers-spec.scm

	This list might be incomplete or outdated if editing the log
	message was not invoked from an up-to-date changes buffer!

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-88

2007-01-31  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Improved `chop-openpgp-tool'.
	* utils/chop-openpgp-tool.c: Include `chop-config.h'.
	  (argp_program_version): Use `PACKAGE_VERSION'.
	  (argp_program_bug_address): Use `PACKAGE_BUGREPORT'.
	  (options): Added `--raw'.
	  (openpgp_key_format): New global.
	  (parse_opt): Handle `--raw'.
	  (import_openpgp_keys): Support the new FORMAT argument and handle the
	  absence of a private key.
	  (show_key_pk_algorithm): Removed.  Replaced by the `pubkey' and
	  `privkey' variants.
	  (main): Don't complain if no private key is passed.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-87

2007-01-30  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Sun/ONC RPC interface: Use octet arrays rather than `char' arrays.
	* rpc/block_rstore.x (chop_rblock_key_t): Made an array of `opaque'
	  (octets, per RFC 1014) rather than `char'.  This has a significant
	  impact on bandwidth usage since `char's are encoded on 4 octets!
	  (chop_rblock_content_t): Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-86

2007-01-17  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed a series of build glitches.  Packing up for Laurent & Isa.
	* Makefile.am (SUBDIRS): Added `rpc'.

	* configure.ac: Make `rpc/Makefile'.

	* include/Makefile.am (nobase_include_HEADERS): Added
	  `chop/store-browsers.h'.

	* src/Makefile.am (EXTRA_DIST): Added `chop-errors.et'.
	  (BUILT_SOURCES): Removed `chop-errors.c'.
	  (chop-errors.c): Fixed the rule to work around a bug in `compile_et'
	  where the file date remained unchanged (thus leading to a recompilation
	  of the whole thing every time).

	* utils/Makefile.am (EXTRA_DIST): Added `gnutls-helper.h'.

	* utils/chop-openpgp-tool.c (main): Pass CERR to `com_err' instead of ERR
	  when `chop_init ()' fails.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-85

2007-01-05  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed the build system for Guile bindings.
	* configure.ac: Invoke `GUILE_SITE_DIR'.  Make sure the `(g-wrap)' is
	  usable.  Generate `guile/pre-inst-guile' and make it executable.

	* guile/.arch-inventory: Mare `pre-inst-guile' as precious.

	* guile/Makefile.am (SETGWPATH): Removed.
	  (module_suffix): New.
	  (chop_moduledir): New.
	  (built_scm_files): Prefix them with `$(module_suffix)'.
	  (nodist_chop_module_DATA): New.
	  (%.c $(module_suffix)/%.scm): Improved rule.  Place modules in
	  `$(module_suffix)' instead of `.'.
	  (TESTS_ENVIRONMENT): New.
	  (check_SCRIPTS): New.

	* guile/README: Updated dependency information (mention G-Wrap 1.9.7).

	* guile/testsuite.scm: Add `modules' to Guile's load path.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-84

2006-12-21  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Updated `configure.ac', disabled D-BUS stuff by default.
	* configure.ac: Require 2.61.  Use `AC_CONFIG_AUX_DIR' and
	  `AC_CONFIG_MACRO_DIR'.  Use `AC_PROG_CC_C_0' which is now necessary.
	  Added `AC_ARG_WITH' for D-BUS, defaulting to `no'; only look for it
	  when `use_dbus' is true.

	* src/store-browser-avahi.c (resolve_callback): Enclose reference to
	  `chop_dbus_block_store_class' in `#ifdef HAVE_DBUS'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-83

	chop-archiver: Cosmetic changes.
	* utils/chop-archiver.c (argp_program_version): Use `PACKAGE_VERSION'.
	  (info): Only issue messages when VERBOSE is true.
	  (initialize_tls_parameters): Don't say "using TLS anonymous
	  authentication".

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-82

	chop-block-server: Display caller information, use TLS finalizer.
	* utils/chop-block-server.c: Include <unistd.h> and <arpa/inet.h>.
	  (display_request_info): New.
	  (handle_*): Use it.
	  (finalize_tls_session): New.
	  (tls_authorizer): Store PEER_KEY using `gnutls_session_set_ptr ()'.
	  (register_rpc_handlers): Pass FINALIZE_TLS_SESSION to `svctls_create ()'.
	  (argp_program_version): Use `PACKAGE_VERSION'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-81

	sunrpc-tls: Added a session finalizer (server-side).
	* include/chop/sunrpc-tls.h (svctls_session_finalizer_t): New.
	  (svctls_create): New FINALIZER and FINALIZER_DATA arguments.

	* src/sunrpc-tls.c (struct tcp_rendezvous)[finalizer, finalizer_data]:
	  New fields.
	  (struct tcp_conn)[finalizer, finalizer_data]: New fields.
	  (svctls_create): New FINALIZER and FINALIZER_DATA arguments.
	  (svctls_finalize_connection): New.
	  (rendezvous_request): Pass the finalizer to `makefd_xprt ()'.
	  (makefd_xprt): New FINALIZER and FINALIZER_DATA arguments.
	  (svctls_destroy): Use `svctls_finalize_connection ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-80

2006-12-20  Ludovic Court`es  <ludovic.courtes@laas.fr>

	sunrpc-tls: Added `svctls_getsession ()'.
	* src/sunrpc-tls.c (svctls_getsession): New.

	* include/chop/sunrpc-tls.h: Updated.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-79

	sunrpc-tls: Handle `RPC_ANYSOCK' and fill out the `xp_port' field.
	* src/sunrpc-tls.c: Include <sys/types.h> and <netinet/in.h>.
	  (svctls_create): Handle SOCK when equal to `RPC_ANYSOCK' and fill out
	  XPRT->XP_PORT thanks to `getsockname ()' (code stolen from glibc's
	  `svc_tcp.c').

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-78

2006-12-19  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Added missing file `store-sunrpc-tls.h'.
	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-7

2006-12-19  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Added missing file `store-sunrpc-tls.h'.
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-77

2006-12-19  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 67-76)

	   - chop-block-server: Minor fixes in the Avahi service publication.
	   - Added `chop-openpgp-tool' (based on GnuTLS).
	   - Minor fixes and debugging enhancements in `sunrpc-tls.c'.
	   - Fixed OpenPGP authentication (hopefully).
	   - chop-block-server: Store/retrieve TLS parameters to/from disk.
	   - gnutls-init-params.c: Improved error handling.
	   - Improved the SunRPC-over-TLS block store interface.
	   - chop-archiver: Store and re-use TLS DH/RSA parameters.
	   - chop-block-server: Display information about the client's key.
	   - Fixed client- and server-side TLS anonymous authentication.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-6

2006-12-19  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed client- and server-side TLS anonymous authentication.
	* src/store-sunrpc.c (chop_sunrpc_block_store_open): Pass
	  `make_default_tls_session' as the session initializer.

	* utils/chop-block-server.c (tls_authorizer): Always return 1 when not
	  using OpenPGP authentication.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-76

	chop-block-server: Display information about the client's key.
	* utils/chop-block-server.c: Include <gnutls/openpgp.h>.
	  (make_tls_session): Set the MAC and cipher priorities (was commented
	  out).
	  (tls_authorizer): New.
	  (register_rpc_handlers): Pass `tls_authorizer' to `svctls_create ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-75

2006-12-15  Ludovic Court`es  <ludovic.courtes@laas.fr>

	chop-archiver: Store and re-use TLS DH/RSA parameters.
	* utils/Makefile.am (chop_archiver_SOURCES): New.

	* utils/chop-archiver.c: Include GnuTLS stuff and
	  <chop/store-sunrpc-tls.h> and "gnutls-helper.h" when `HAVE_GNUTLS'.
	  (CONFIG_DIRECTORY, CONFIG_TLS_DH_PARAMS, CONFIG_TLS_RSA_PARAMS): New.
	  (info): New, copied from `chop-block-server.c'.
	  (client_anoncred, client_certcred, client_dh_params,
	  client_rsa_params): New.
	  (initialize_tls_parameters): New, roughly copied from
	  `chop-block-server.c'.
	  (initialize_tls_session): New.
	  (main): Invoke `initialize_tls_parameters ()', updated call to
	  `chop_sunrpc_tls_block_store_open ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-74

	Improved the SunRPC-over-TLS block store interface.
	* include/Makefile.am (nobase_include_HEADERS): Added
	  `store-sunrpc-tls.h'.

	* include/chop/stores.h (chop_sunrpc_tls_block_store_open): Renamed to
	  `chop_sunrpc_tls_block_store_simple_open ()', documented its
	  limitations.

	* src/store-sunrpc.c: Include <chop/store-sunrpc-tls.h>.
	  (chop_tls_params_t): New type.
	  (create_tls_session): Renamed to...
	  (make_default_tls_session): Adapted to match
	  `chop_tls_session_initializer_t'; moved part of the work to...
	  (sunrpc_block_store_open): Take a session initializer and a closure
	  instead of public/private key file names.  Perform the handshake here.
	  (chop_sunrpc_tls_block_store_open): Renamed to
	  `chop_sunrpc_tls_block_store_simple_open'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-73

	gnutls-init-params.c: Improved error handling.
	* utils/gnutls-init-params.c (INITIALIZE_PARAMS): When `PARAMS_EXPORT'
	  returns non-zero, check whether it is just
	  `GNUTLS_E_SHORT_MEMORY_BUFFER' and report an error otherwise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-72

	chop-block-server: Store/retrieve TLS parameters to/from disk.
	* utils/Makefile.am (EXTRA_DIST): Added `gnutls-init-params.c'.
	  (chop_block_server_SOURCES): New.

	* utils/chop-block-server.c: Include "gnutls-helper.h".
	  (program_name): Now exported.
	  (CONFIG_DIRECTORY, CONFIG_TLS_RSA_PARAMS, CONFIG_TLS_DH_PARAMS): New.
	  (initialize_tls_parameters): Use the `chop_tls_' functions from
	  `gnutls-helper.c'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-71

2006-12-14  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed OpenPGP authentication (hopefully).
	* src/store-sunrpc.c (create_tls_session)[cert_type_priority]: New, use it.
	  [kx_prio]: Added `GNUTLS_KX_DHE_DSS'.

	* utils/chop-block-server.c (make_tls_session)[cert_type_priority]: New,
	  use it.
	  [kx_prio]: Added `GNUTLS_KX_DHE_DSS'.
	  (initialize_tls_parameters): Set certificate parameters here.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-70

2006-10-31  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Minor fixes and debugging enhancements in `sunrpc-tls.c'.
	* src/sunrpc-tls.c (ENABLE_GNUTLS_LOGGING): New macro.
	  (ENSURE_GNUTLS_INITIALIZED): Use it.
	  (svctls_create): Check whether SOCK is `RPC_SOCKANY'.  Initialize
	  `xp_addrlen' and `xp_raddr'.
	  (makefd_xprt): Initialize `xp_addrlen' and `xp_raddr'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-69

	Added `chop-openpgp-tool' (based on GnuTLS).
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-68

2006-10-11  Ludovic Courtes  <ludovic.courtes@laas.fr>

	chop-block-server: Minor fixes in the Avahi service publication.
	* utils/avahi-publish.c (entry_group_callback): Only go through the
	  assertion when GROUP is non-NULL.
	  (create_services): Comment out TXT_TLS_YES when HAVE_GNUTLS is
	  undefined.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-67

	chop-block-server: Minor fixes in the Avahi service publication.
	* utils/avahi-publish.c (entry_group_callback): Only go through the
	  assertion when GROUP is non-NULL.
	  (create_services): Comment out TXT_TLS_YES when HAVE_GNUTLS is
	  undefined.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-5

2006-09-06  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Merge from lcourtes@laas.fr--2004-mosaic
	Patches applied:

	 * lcourtes@laas.fr--2004-mosaic/libchop--main--0.2  (patch 52-66)

	   - chop-block-server: Allow the address and port to be selected.
	   - Check whether D-BUS is available before building `chop-dbus-block-server'.
	   - Fixed the client-side SunRPC stuff.
	   - Updated Guile bindings for `sunrpc-block-store-open'.
	   - Fixed tiny memory leaks in `chop-archiver.c'.
	   - Various Guile binding fixes and a Guile binding test-suite.
	   - Added preliminary support for RPCs over TLS (anonymous authentication).
	   - Fixed a bug in the CHK block indexer; added `chop_cipher_reset ()'.
	   - Implemented an ASCII serialization format for the tree indexer.
	   - Cosmetic changes in `chop-archiver.c'.
	   - Added a complete stream-indexing test case.
	   - Tiny fixes in the CHK block indexer.
	   - Augmented the index tuple ASCII serialization format; updated Guile
	     bindings.
	   - Fixed error handling in the zip filters and filtered stream.
	   - Preliminary TLS/OpenPGP support (but no supported ciphersuite...).

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-4

2006-08-02  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Preliminary TLS/OpenPGP support (but no supported ciphersuite...).
	* configure.ac: Look for `gnutls-extra' and require it.

	* include/chop/stores.h (chop_sunrpc_tls_block_store_open): New.

	* include/chop/sunrpc-tls.h (svctls_authorizer_t): New.
	  (svctls_create): Added the AUTHORIZER and AUTH_DATA arguments.

	* src/Makefile.am (libchop_la_LDFLAGS): Added `$(LIBGNUTLS_EXTRA_LIBS)'.
	  (AM_CFLAGS): Likewise.

	* src/store-sunrpc.c: Include `gnutls.h' and `extra.h'.
	  (create_tls_session): Added PUBKEY_FILE and PRIVKEY_FILE.
	  [cipher_prio]: Added AES256.
	  Support RSA, RSA-EXPORT, and DHE-RSA if both PUBKEY_FILE and
	  PRIVKEY_FILE are non-null.
	  (chop_sunrpc_block_store_open): Renamed to `sunrpc_block_store_open'.
	  (chop_sunrpc_block_store_open): New, call the above one.
	  (chop_sunrpc_tls_block_store_open): Likewise.

	* src/sunrpc-tls.c (makefd_xprt): Added a `gnutls_session_t *' param.
	  (tcp_rendezvous): Added AUTHORIZER and AUTHORIZER_DATA.
	  (svctls_create): Take AUTHORIZER_DATA and AUTH_DATA.
	  (makefd_xprt): Return the session in *SESSION.
	  (rendezvous_request): Call the authorized if specified.

	* utils/chop-archiver.c (tls_openpgp_privkey_file): New.
	  (tls_openpgp_pubkey_file): New.
	  (tls_use_openpgp_authentication): New.
	  (options)[openpgp-pubkey]: New.
	  [openpgp-privkey]: New.
	  (parse_opt): Handle them.
	  (main): Use `chop_sunrpc_tls_block_store_open ()' when OpenPGP
	  authentication is required.

	* utils/chop-block-server.c: Include <gnutls/extra.h>.
	  (tls_openpgp_pubkey_file): New.
	  (tls_openpgp_privkey_file): New.
	  (tls_use_openpgp_authentication): New.
	  (server_certcred): New.
	  (server_rsa_params): New.
	  (make_tls_session): Use RSA, RSA-EXPORT, DHE-RSA if required.
	  (initialize_tls_parameters): Initialize RSA parameters if needed.
	  (register_rpc_handlers): Updated call to `svctls_create ()'.
	  (options)[openpgp-pubkey]: New.
	  [openpgp-privkey]: New.
	  (parse_opt): Handle them.
	  (main): Added "up and running" message.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-66

2006-07-28  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed error handling in the zip filters and filtered stream.
	* src/filter-zip-push-pull.c (ZIP_PULL_METHOD): Left only one `return'.
	  Don't filter out non-filter related errors (from the input fault
	  handler) when *PULLED is non-zero.

	* src/stream-filtered.c (handle_input_fault): Convert `CHOP_STREAM_END'
	  errors from the backing stream to `CHOP_FILTER_UNHANDLED_FAULT'.
	  (filtered_stream_read): Switch to flushing mode when ERR was
	  `CHOP_FILTER_EMPTY', not just when ERR was non-zero.

	* tests/interfaces/filters.c (badly_handle_input_fault): New.
	  (test_filter_non_nominal): New.
	  (main): Use it.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-65

2006-07-27  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Augmented the index tuple ASCII serialization format; updated Guile bindings.
	* include/chop/indexers.h (chop_ascii_deserialize_index_tuple_s1): Added
	  an INDEXER_CLASS parameter.
	  (chop_ascii_deserialize_index_tuple_s2): Added INDEXER_CLASS and
	  INDEXER.
	  (chop_ascii_serialize_index_tuple): Added INDEXER.

	* src/indexers.c (chop_ascii_serialize_index_tuple): Added INDEXER.
	  Serialize it.
	  (chop_ascii_deserialize_index_tuple_s1): Added INDEXER_CLASS.
	  Deserialize it.  Fixed a bug regarding to failing class lookups being
	  undetected.
	  (chop_ascii_deserialize_index_tuple_s2): Handle INDEXER_CLASS and
	  INDEXER.

	* utils/chop-archiver.c (indexer_class_name): New.
	  (indexer_ascii): New.
	  (options)[p]: Mention `tls/tcp'.
	  [k]: New.
	  [K]: New.
	  (do_archive): Pass INDEXER to `serialize_tuple ()'.
	  (do_retrieve): Change the order of arguments.
	  (log_indexer): New.
	  (process_command): No longer take INDEXER and INDEXER_LOG.
	  Performed the required lookup/deserialization based on
	  INDEXER_CLASS_NAME (at archival time) or based on the given handle (at
	  restoration time).
	  (parse_opt): Handle `k' and `K'.
	  (main): Don't worry about the indexer.

	* guile/indexers-spec.scm (ascii-serialize-index-tuple): Updated.
	  (ascii-deserialize-index-tuple): Updated.

	* guile/indexers-support.c (chop_ascii_serialize_index_tuple_alloc):
	  Updated (+ fixed a leak: BUFFER was never returned).
	  (chop_ascii_deserialize_index_tuple_alloc): Updated.

	* guile/testsuite.scm (t-tuple-deserialization): New.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-64

	Tiny fixes in the CHK block indexer.
	* src/block-indexer-chk.c (chk_deserialize): Initialize HANDLE->BLOCK_ID
	  and HANDLE->KEY so that Valgrind doesn't worry too much.
	  (chk_index_block): Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-63

	Added a complete stream-indexing test case.
	* tests/features/Makefile.am (check_PROGRAMS): Added `stream-indexing'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-62

	Cosmetic changes in `chop-archiver.c'.
	* utils/chop-archiver.c: Fixed a few error strings.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-61

	Implemented an ASCII serialization format for the tree indexer.
	* src/indexer-tree.c (chop_tree_indexer_t)[cipher_handle]: Removed (was unused).
	  (iht_ctor): Initialize methods here.
	  (iht_serialize): New.
	  (iht_deserialize): New.
	  (chop_tree_indexer_class): Use them.
	  (chop_tree_indexer_open): Don't initialize methods here.
	  (chop_decoded_block_decode_header): Check the size of BLOCK->BUFFER
	  before trying to decode the buffer.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-60

	Fixed a bug in the CHK block indexer; added `chop_cipher_reset ()'.
	* include/chop/cipher.h (chop_cipher_reset): New decl.

	* src/block-indexer-chk.c (chk_block_fetch): Call `chop_cipher_reset ()'
	  before `set_key ()' and `decrypt ()'.
	  (chk_index_block): Likewise.
	  (cbi_deserialize): Documented the ASCII serialization format.

	* src/cipher.c (chop_cipher_reset): New.

	* tests/interfaces/block-indexers.c (BLOCKS_TO_INDEX): New.
	  (BLOCK_SIZE): New.
	  (random_data): Made two-dimensional.
	  (main): Index and fetch several blocks at once.  Unfortunately, this
	  doesn't suffice to catch the bug fixed in the CHK block indexer above.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-59

2006-07-26  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Added preliminary support for RPCs over TLS (anonymous authentication).
	* README: Updated the list of dependencies.

	* configure.ac: Check for GNUtls.

	* include/Makefile.am (nobase_include_HEADERS): Added
	  `block-indexers.h'.  Add `sunrpc-tls.h' if GNUtls is available,
	  otherwise put it in `nobase_noinst_HEADERS'.

	* src/Makefile.am (libchop_la_SOURCES): Add `sunrpc-tls.c' if GNUtls is
	  available, otherwise put it in `EXTRA_DIST'.
	  (EXTRA_DIST): For all the optional source files, put them there if
	  there option is not available.
	  (libchop_la_LDFLAGS): If GNUtls is available, add `$(LIBGNUTLS_LIBS)'.
	  (AM_CFLAGS): If GNUtls is available, add `$(LIBGNUTLS_CFLAGS)'.

	* src/store-sunrpc.c: Include `<chop/sunrpc-tls.h>' if `HAVE_GNUTLS' is
	  defined.
	  (connect_to_host): Produce it if `HAVE_GNUTLS' is defined.  Fixed the
	  call to `connect ()'.
	  (create_tls_session): New.
	  (chop_sunrpc_block_store_open): Added support for protocol `tls/tcp'.

	* utils/avahi-publish.c (create_services)[txt_tls]: New, publish it as a
	  TXT property.

	* utils/chop-block-server.c: Include `<chop/sunrpc-tls.h>' if
	  `HAVE_GNUTLS' is defined.
	  (use_tls): New global.
	  (handle_write_block): Fixed typo.
	  (server_anoncred): New.
	  (server_dh_params): New.
	  (make_tls_session): New.
	  (initialize_tls_parameters): New.
	  (register_rpc_handlers): If `HAVE_GNUTLS' is defined, use
	  `svctls_create ()'.
	  (options)[tls]: New.
	  (parse_opt): Handle `t'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-58

2006-06-13  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Various Guile binding fixes and a Guile binding test-suite.
	* guile/core-support.c (gwrap_chop_object_cleanup): Updated the `#if
	  DEBUG' code.

	* guile/store-stats-support.c (chop_stat_block_store_stats_alloc): Free
	  RESULT if ERR is set.

	* guile/filters-support.c (chop_zlib_unzip_filter_init_alloc): Allocate
	  memory of the size of an instance of CHOP_ZLIB_UNZIP_FILTER_INIT_CLASS.

	* guile/testsuite.scm: Completed and improved.

	* guile/Makefile.am (TESTS): New.
	  (EXTRA_DIST): Added `$(TESTS)'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-57

2006-04-10  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed tiny memory leaks in `chop-archiver.c'.
	* utils/chop-archiver.c (main): When invoking `chop_stat_block_store_open ()',
	  make sure to pass a value part of `chop_proxy_semantics_t'.
	  Use `chop_object_destroy ()' to destroy LOG, STORE, and METASTORE.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-56

2006-04-07  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Updated Guile bindings for `sunrpc-block-store-open'.
	* guile/stores-spec.scm (sunrpc-block-store-open): Added the `port'
	  argument.

	* guile/stores-support.c (chop_sunrpc_block_store_open_alloc): Added the
	  `port' argument.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-55

2006-03-31  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Fixed the client-side SunRPC stuff.
	* include/chop/stores.h (chop_sunrpc_block_store_open): Updated.

	* src/store-browser-avahi.c (CHOP_AVAHI_SERVICE_BASE_TYPE): New.
	  (CHOP_AVAHI_SERVICE_TYPE_TCP): New.
	  (CHOP_AVAHI_SERVICE_TYPE_UDP): New.

	* src/store-sunrpc.c (get_host_inet_address): New.
	  (chop_sunrpc_block_store_open): Added the PORT parameter.
	  Use `clnttcp_create ()' and `clntudp_create ()' instead of `clnt_create
	  ()'.

	* utils/chop-archiver.c (protocol_name): New.
	  (service_port): New.
	  (options): Added `--protocol'.

	* utils/chop-store-discover.c: Tiny fix.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-54

	Check whether D-BUS is available before building `chop-dbus-block-server'.
	* utils/Makefile.am (noinst_PROGRAMS): Check whether HAVE_DBUS is set
	  before adding `chop-dbus-block-server'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-53

	chop-block-server: Allow the address and port to be selected.
	* utils/avahi-publish.c (CHOP_AVAHI_SERVICE_TYPE): Renamed to
	  `CHOP_AVAHI_SERVICE_BASE_TYPE'.
	  (create_services): Compute the service type name based on
	  PROTOCOL_TYPE.  Publish the service using the value of SERVICE_PORT.

	* utils/chop-block-server.c (protocol_name): Removed.  Using
	  PROTOCOL_TYPE instead.
	  (binding_address): New.
	  (service_port): New.
	  (listen_there): New.
	  (register_rpc_handlers): Use it.  Do not register with portmap.
	  (options): New `--port' and `--address' options.
	  (parse_opt): Compute PROTOCOL_TYPE.  Handle these new options.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-52

2006-03-30  Ludovic Courtes  <ludovic.courtes@laas.fr>

	Fixed the client-side SunRPC stuff.
	* include/chop/stores.h (chop_sunrpc_block_store_open): Updated.

	* src/store-browser-avahi.c (CHOP_AVAHI_SERVICE_BASE_TYPE): New.
	  (CHOP_AVAHI_SERVICE_TYPE_TCP): New.
	  (CHOP_AVAHI_SERVICE_TYPE_UDP): New.

	* src/store-sunrpc.c (get_host_inet_address): New.
	  (chop_sunrpc_block_store_open): Added the PORT parameter.
	  Use `clnttcp_create ()' and `clntudp_create ()' instead of `clnt_create
	  ()'.

	* utils/chop-archiver.c (protocol_name): New.
	  (service_port): New.
	  (options): Added `--protocol'.

	* utils/chop-store-discover.c: Tiny fix.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-3

	Check whether D-BUS is available before building `chop-dbus-block-server'.
	* utils/Makefile.am (noinst_PROGRAMS): Check whether HAVE_DBUS is set
	  before adding `chop-dbus-block-server'.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-2

	chop-block-server: Allow the address and port to be selected.
	* utils/avahi-publish.c (CHOP_AVAHI_SERVICE_TYPE): Renamed to
	  `CHOP_AVAHI_SERVICE_BASE_TYPE'.
	  (create_services): Compute the service type name based on
	  PROTOCOL_TYPE.  Publish the service using the value of SERVICE_PORT.

	* utils/chop-block-server.c (protocol_name): Removed.  Using
	  PROTOCOL_TYPE instead.
	  (binding_address): New.
	  (service_port): New.
	  (listen_there): New.
	  (register_rpc_handlers): Use it.  Do not register with portmap.
	  (options): New `--port' and `--address' options.
	  (parse_opt): Compute PROTOCOL_TYPE.  Handle these new options.

	git-archimport-id: lcourtes@laas.fr--2005-mobile/libchop--main--0.2--patch-1

2006-03-22  Ludovic Court`es  <ludovic.courtes@laas.fr>

	First stub of a working D-BUS server (only handles construction).
	* include/chop/stores.h (chop_dbus_block_store_open): New.

	* src/store-dbus.c (chop_dbus_block_store_t): Keep the path of the remote
	  object.  Added a `chop_log_t' object as well.
	  (invoke_new_client_method): New.
	  (chop_dbus_block_store_open): Renamed HOST to D_ADDRESS.  Call
	  `invoke_new_client_method ()'.

	* utils/Makefile.am (noinst_PROGRAMS): Added `chop-dbus-block-server'.

	* utils/chop-archiver.c (use_dbus): New.
	  (options): New `--dbus' option when `HAVE_DBUS' is defined.

	* utils/chop-dbus-block-server.c: First ``working'' implementation with
	  complete event loop.  Only handles calls to the constructor so far.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-51

2006-03-10  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Honor the timeout argument in `chop-store-discover'.
	* configure.ac: Added `AC_HEADER_TIME'.

	* utils/chop-store-discover.c (main): When USE_TIMEOUT, loop until the
	  timeout is actually reached.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-50

	Various build cleanups.
	* configure.ac: Use `PKG_CHECK_EXISTS' for `libcom_err'.
	  Substitute COMPILE_ET.
	  For `avahi-client', substitute `AVAHI_CPPFLAGS' and `AVAHI_LIBS'
	  instead of changing `CPPFLAGS' and `LIBS'.

	* src/Makefile.am (lib_LTLIBRARIES): Renamed `libchop-store-browser.la'
	  to `libchop-store-browsers.la'.
	  (libchop_store_browsers_la_LIBADD): New.
	  (libchop_store_browsers_la_CPPFLAGS): New.
	  (RPCGEN): Removed.
	  (COMPILE_ET): Removed.

	* utils/Makefile.am: Updated.

	* guile/Makefile.am (libguile_chop_store_browsers_la_LIBADD): Updated.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-49

2006-03-09  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented Guile bindings for the store-browser interface.
	* guile/store-browsers-spec.scm: New.

	* guile/store-browsers-support.c: New.

	* guile/Makefile.am (lib_LTLIBRARIES): Added
	  `libguile-chop-store-browsers.la'.
	  (support_c_files): New.
	  (EXTRA_DIST): Added `$(support_c_files)'.

	* src/store-browser-avahi.c (abs_iterate): Added debugging output.
	  (abs_loop): Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-48

	Improved the `avahi-store-browser'.  Small fixes.
	* configure.ac: Check for `cuserid ()'.

	* include/chop/store-browsers.h (chop_avahi_store_browser_open): Updated.

	* src/store-browser-avahi.c (asb_ctor): Initialize the various fields to
	  NULL.
	  (chop_avahi_store_browser_open): Added a DOMAIN argument.  Pass it to
	  `avahi_service_browser_new ()'.  Only call `chop_object_destroy ()' in
	  `fail'.

	* utils/avahi-publish.c: Include <assert.h>.
	  Handle the case where `HAVE_CUSERID' is undefined.

	* utils/chop-store-discover.c (options): Added `--domain'.
	  (domain_name): New.
	  (main): Pass it to `chop_avahi_store_browser_open ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-47

2006-03-08  Ludovic Court`es  <ludovic.courtes@laas.fr>

	First implementation of the `store-browser' interface.
	* include/chop/store-browsers.h: New.

	* src/store-browsers.c: New.

	* src/store-browser-avahi.c: New.

	* utils/chop-store-discover.c: New.

	* src/Makefile.am (lib_LTLIBRARIES): Added `libchop-store-browser.la'.

	* utils/Makefile.am (bin_PROGRAMS): Added `chop-store-discover'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-46

2006-03-07  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Improved the Avahi publication of `chop-block-server'.
	* utils/avahi-server.c: Renamed to `avahi-publish.c'.
	  (SERVICE_TYPE): Renamed to `CHOP_AVAHI_SERVICE_TYPE' and changed.
	  (create_services): Automatically find a service name like `user@host'
	  if none was provided.
	  Compute a `hash' TXT property.
	  (service_name): Moved to `chop-block-server.c'.

	* utils/chop-block-server.c (service_name): New .
	  (info): New.
	  (options): New option `--service-name'.
	  (parse_opt): Handle the new option.

	* utils/Makefile.am (EXTRA_DIST): Updated.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-45

2006-03-03  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Added support for publication via Avahi in `chop-block-server'.
	* utils/avahi-server.c: New.

	* configure.ac: Look for Avahi.

	* utils/Makefile.am (EXTRA_DIST): New.

	* utils/chop-block-server.c: Added support for Avahi.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-44

	Use the `pkg-config' Autoconf macros.
	* configure.ac: Use the pkg-config M4 macros.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-43

2006-02-28  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed a bug in `chop_buffer_grow ()' when `ENABLE_POOL' is set.
	* src/buffers.c (chop_buffer_grow): When `find_buffer_in_pool ()' has
	  returned a new buffer, copy the contents of the old one into it before
	  returning.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-42

2006-02-15  Ludovic Court`es  <ludovic.courtes@laas.fr>

	First stab at the DBus-based remote block store.
	* src/store-dbus.c: New.  Untested.

	* utils/chop-dbus-block-server.c: New.  Just a stub.

	* configure.ac: Check for DBus availability.

	* include/chop/stores.h (chop_dbus_block_store_class): New declaration.

	* src/Makefile.am (libchop_la_SOURCES): Add `store-dbus.c' when
	  available.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-41

	Hmm, renamed `sunrpc_remote_block_store' to `sunrpc_block_store'.
	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-40

	Renamed `remote_block_store' to `sunrpc_remote_block_store'.
	* src/store-remote.c: Renamed to `store-sunrpc-remote.c'.
	  (chop_remote_block_store_class): Renamed to
	  CHOP_SUNRPC_REMOTE_BLOCK_STORE_CLASS.
	  (chop_remote_block_store_open): Renamed to
	  `chop_sunrpc_remote_block_store_open'.

	* guile/stores-spec.scm (remote-block-store-open): Renamed to
	  `sunrpc-remote-block-store-open'.

	* guile/stores-support.c (chop_remote_block_store_open_alloc): Likewise.

	* include/chop/stores.h: Updated.

	* src/Makefile.am (libchop_la_SOURCES): Updated.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-39

	Various tiny fixes.
	* guile/cipher-support.c (chop_cipher_handle_cleanup): Fixed the ifdef'd
	  code.

	* guile/indexers-spec.scm (indexer-fetch-stream): Updated the comment.

	* src/buffers.c (find_buffer_in_pool): Decrease BUFFER_POOL_AVAILABLE by
	  FOUND->READ_SIZE when a matching buffer is found.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-38

2006-01-25  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed a couple of memory leaks.
	* src/block-indexer-chk.c (cbi_deserialize): Set OWNS_CIPHER_HANDLE to 1.

	* src/indexer-tree.c (chop_tree_stream_class): In the definition, mark it
	  as a child of `stream', not `object'!  The definition was not in sync
	  with the declaration...

	* utils/chop-archiver.c (process_command): Call `chop_object_destroy ()'
	  instead of `chop_stream_close ()' when closing the stream that was
	  passed to `do_archive ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-37

	Updated the doc for the semantics of `chop_object_copy ()'.
	* doc/libchop.texi (Cloning an Object): Updated the description to match
	  the latest `chop_object_copy ()' semantics.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-36

2006-01-18  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented various copy constructors and `chop_object_copy ()'.
	* include/chop/objects.h (chop_object_copy): Declared as `extern'.

	* guile/store-stats-spec.scm (chop_stat_block_store_stats_alloc): Use
	  `chop_object_copy ()' instead of the hand-written hack.

	* src/indexer-tree.c (chop_decoded_block_tree_init): Likewise.
	  (chop_decoded_block_tree_free): Call `chop_object_destroy (tree->index)'.

	* src/block-indexer-chk.c: Mention that the default copy ctor is enough.

	* src/block-indexer-hash.c: Likewise.

	* src/block-indexer-uuid.c (uih_copy): New.
	  (chop_uuid_index_handle_class): Use it.

	* src/logs.c (log_copy): New.
	  (chop_log_class): Use it.

	* src/store-stat.c (bss_copy): New.
	  (chop_block_store_stats_class): Use it.

	* src/chop.c (_object_primitive_copy): New.
	  (chop_object_class): Use it.
	  (chop_object_copy): New.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-35

	Introduced the use of GCC's `__builtin_expect ()'.
	* include/chop/chop.h (CHOP_EXPECT): New macro.
	  (CHOP_EXPECT_TRUE): New macro.
	  (CHOP_EXPECT_FALSE): New macro.

	* src/chopper-anchor-based.c (chop_anchor_chopper_read_block): Use them.

	* src/chopper-fixed-size.c (chop_fixed_chopper_read_block): Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-34

2006-01-17  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented equality predicates for all index handles; augmented G-Wrap bindings.
	* src/block-indexer-chk.c (chk_equalp): New.
	  (chop_chk_index_handle_class): Use it.

	* src/block-indexer-hash.c (hih_equalp): New.
	  (chop_hash_index_handle_class): Use it.

	* src/block-indexer-uuid.c (uih_equalp): New.
	  (chop_uuid_index_handle_class): Use it.

	* guile/core-spec.scm (wrap-as-chop-object!): Added a
	  `wcp-equal-predicate' option.

	* guile/core-support.c (gwrap_chop_object_equal): New.

	* guile/core-support.h (gwrap_chop_object_equal): New declaration.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-33

	Updated the object system documentation.
	* doc/libchop.texi (Cloning an Object): New section.
	  (Testing Objects for Equality): New section.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-32

	Added a copy constructor and an equality predicated to `chop_class_t'.
	* include/chop/objects.h (chop_copy_constructor_t): New.
	  (chop_equality_predicate_t): New.
	  (chop_class_t): New fields `copy' and `equal'.
	  (CHOP_DEFINE_RT_CLASS): New arguments COPY and EQUAL.
	  (CHOP_DEFINE_RT_CLASS_WITH_METACLASS): Likewise.
	  (chop_object_equal): New.
	  (chop_object_copy): New.

	* *.[ch]: Updated class definitions accordingly.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-31

2006-01-16  Ludovic Court`es  <ludovic.courtes@laas.fr>

	More GCC4 `char' vs. `unsigned char' fixes.
	Fixes `pointer targets differ in signedness' warnings.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-30

	Fixed an index handle binary deserialization bug on some platforms.
	* include/chop/block-indexers.h (chop_hash_block_fetcher_class): New
	  declaration.
	  (chop_chk_block_fetcher_class): Likewise.
	  (chop_uuid_block_fetcher_class): Likewise.

	* src/block-indexer-chk.c (chk_deserialize): Cast BUFFER to `unsigned
	  char *' and use the unsigned buffer when computing BLOCK_SIZE,
	  KEY_SIZE, and BLOCK_ID_SIZE.  This fixes a bug on some platforms where
	  a signed char was implicitly used.

	* src/block-indexer-hash.c (hih_deserialize): Likewise.

	* tests/interfaces/indexers.c (main): Is `test_debug_mode ()' is true,
	  attach the logs of the indexer and block fetcher to stderr.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-29

	Fixed GCC 4 warnings.
	Fixed GCC 4 warnings, mostly `pointer targets differ in signedness'
	regarding pointers to `char'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-28

2006-01-13  Ludovic Court`es  <ludovic.courtes@laas.fr>

	First stab at an improved Arch inventory.
	First stab at an improved Arch inventory.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-27

2006-01-11  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Minor fix for the Guile bindings of `<chop-block-key-type>' and `<chop-input-buffer-type>'.
	* guile/stores-spec.scm (post-call-arg-cg): For `<chop-block-key-type>',
	  don't call `scm_gc_unprotect_object ()' is the key wasn't a u8vector.

	* guile/core-spec.scm (post-call-arg-cg): Likewise for
	  `<chop-input-buffer-type>'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-26

2006-01-06  Ludovic Court`es  <ludovic.courtes@laas.fr>

	New `--enable-guile-bindings' option to `configure'.
	* configure.ac: New `--enable-guile-bindings' option.  Disabled by default.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-25

	Implemented block iterators for the BDB 4.4 store.
	* configure.ac: Look for BDB 4.4 instead of BDB 4.3.

	* README: Mention the new BDB version required.

	* include/chop/stores.h (chop_bdb_store_open): Updated the declaration
	  and comment.

	* src/chop.c (chop_bdb_block_iterator_class): New declaration.

	* src/store-bdb.c (chop_bdb_block_store_t): Removed `db_env'.
	  (chop_bdb_generic_open): Pass `DB_HASH' as the default DB_TYPE.
	  (chop_bdb_block_iterator_t): New.
	  (bbi_ctor): New.
	  (bbi_dtor): New.
	  (do_free): New.
	  (bdb_cursor_nextify): New.
	  (chop_bdb_first_block): New.
	  (chop_bdb_it_next): New.
	  (chop_bdb_store_open): Slightly changed the input parameters.
	  Call `chop_object_initialize ()'.  Set the new iterator class.
	  (chop_bdb_delete_block): Check the return value of `del ()'.
	  Removed the code supposed to use `store-generic-db.c'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-24

2006-01-04  Ludovic Court`es  <ludovic.courtes@laas.fr>

	First stab at a Berkeley DB 4.3 block store.
	* src/store-bdb.c: New file.

	* README: Mention BDB as an optional dependency.

	* TODO: Updated.

	* configure.ac: Look for BDB 4.3.

	* include/chop/stores.h (chop_bdb_block_store_class): New declaration.
	  (chop_bdb_store_open): New.

	* src/Makefile.am (libchop_la_SOURCES): Add `store-bdb.c' if `HAVE_BDB'
	  is true.

	* tests/interfaces/stores.c (classes): Added CHOP_BDB_BLOCK_STORE_CLASS.
	  (main): Added a test for `delete'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-23

	Implemented Guile bindings for the block iterator interface.
	* guile/stores-spec.scm (<block-iterator>): New wrapped type.
	  (store-first-block): New, replaces `store-first-key'.
	  (store-next-key): Removed.
	  (block-iterator-nil?): New.
	  (block-iterator-key): New.
	  (block-iterator-next!): New.

	* guile/stores-support.c (chop_store_first_block_alloc): New.
	  (chop_block_iterator_key_check_non_nil): New.
	  (scm_store_first_key): Changed into `scm_store_first_block ()'.
	  (scm_store_next_key): Removed.
	  (sbs_ctor): Initialize `iterator_class' to NULL.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-22

2006-01-03  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented real block iterators.
	* include/chop/stores.h (chop_block_iterator_t): New class.
	  (chop_store_first_key): Changed into `chop_store_first_block ()'.
	  (chop_store_next_key): Removed.
	  (chop_store_iterator_class): New.
	  (chop_block_iterator_next): New.
	  (chop_block_iterator_is_nil): New.
	  (chop_block_iterator_key): New.
	  (chop_block_key_equal): New.

	* src/chop.c: Added declarations of the various internal block iterator
	  classes.

	* src/store-dummy.c: Updated according to the new API.

	* src/store-filtered.c: Likewise.

	* src/store-gdbm.c: Likewise.

	* src/store-generic-db.c: Likewise.

	* src/store-qdbm.c: Likewise.

	* src/store-remote.c: Likewise.

	* src/store-smart.c: Likewise.

	* src/store-stat.c: Likewise.

	* src/store-tdb.c: Likewise.

	* src/stores.c (store_ctor): Initialize ITERATOR_CLASS and FIRST_BLOCK.
	  (bi_ctor): New.
	  (bi_dtor): New.
	  (chop_block_iterator_class): New.

	* tests/interfaces/stores.c: Added a simple test of the iterator
	  interface.

	* utils/chop-store-convert.c (main): Updated to the new API.

	* utils/chop-store-list.c (main): Likewise.

	* TODO: New file.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-21

2005-12-06  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed the approximation of AVERAGE_SIZE in the anchor-based chopper.
	* src/chopper-anchor-based.c (ab_generic_open): When AVERAGE_SIZE was an
	  exact power of two, this rounded it down to the strictly lower power of
	  two.  This patch fixes it.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-20

2005-12-05  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented a UUID-based block indexer.
	* src/block-indexer-uuid.c: New.

	* configure.ac: Check for `libuuid'.

	* src/Makefile.am (libchop_la_SOURCES): If `HAVE_LIBUUID' is true, add
	  `block-indexer-uuid.c'.

	* src/chop.c: Declare the UUID-related classes.

	* include/chop/block-indexers.h (chop_uuid_block_indexer_class): New.
	  (chop_uuid_block_indexer_open): New.

	* tests/interfaces/block-indexers.c: Include `chop-config.h'.  Test the
	  UUID block indexer if available.

	* guile/block-indexers-spec.scm: Wrap `chop_uuid_block_indexer_open ()'.

	* guile/block-indexers-support.c (chop_uuid_block_indexer_open_alloc):
	  New.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-19

2005-11-17  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed a bug in the block fetcher Guile bindings; augmented them.
	* guile/block-indexers-support.c (chop_block_indexer_make_fetcher_alloc):
	  Actually call `chop_block_indexer_initialize_fetcher ()'!

	* guile/indexers-spec.scm (indexer-fetch-stream): Mark every input
	  argument but HANDLE and INDEXER as aggregated.
	  (ascii-serialize-index-tuple): New.
	  (ascii-deserialize-index-tuple): New.

	* guile/indexers-support.c (chop_ascii_serialize_index_tuple_alloc): New.
	  (chop_ascii_deserialize_index_tuple_alloc): New.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-18

2005-11-14  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Augment the doc's introduction.
	* doc/libchop.texi (Overview): Augmented.
	  (Use Cases): Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-17

	Fixed the proxy semantics of the stat block store.
	* guile/store-stats-spec.scm (stat-block-store-open): Added a
	  CLOSE-BACKEND? argument.

	* guile/store-stats-support.c (chop_stat_block_store_open_alloc):
	  Likewise.

	* include/chop/store-stats.h (chop_stat_block_store_open): Replaced the
	  TAKEOVER argument by a BPS argument.

	* src/store-stat.c (chop_stat_block_store_t): Replace the `takeover'
	  field by a `backend_ps' field.
	  (sbs_dtor): Handle `backend_ps'.
	  (chop_stat_block_store_close): Likewise.
	  (chop_stat_block_store_open): Likewise.


	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-16

2005-11-10  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Updated the Guile bindings.
	* guile/filters-spec.scm: Don't use `stores-spec' nor depend on `stores'.
	  (filtered-store-open): Moved to `stores-spec'.

	* guile/filters-support.c (chop_filtered_store_open_alloc): Moved to
	  `stores-support.c'.

	* guile/stores-spec.scm: Use `filters-spec' and depend on `filters'.
	  (filtered-stream-open): New.

	* guile/stores-support.c (chop_filtered_store_open_alloc): New.

	* guile/streams-spec.scm (filtered-stream-open): Added a CLOSE-BACKEND?
	  argument.

	* guile/streams-support.c (chop_filtered_store_open_alloc): Added the
	  CLOSE_BACKEND argument.  Updated.

	* guile/testsuite.scm: Added a silly test.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-15

	Fixed various memory management-related bugs.
	* include/chop/chop.h (chop_proxy_semantics_t): New type.

	* include/chop/filters.h (chop_filtered_store_open): Moved to `stores.h'.

	* include/chop/stores.h (chop_filtered_store_open): New.

	* include/chop/streams.h (chop_filtered_stream_open): Updated.

	* src/chop.c (chop_test_and_untrack_object): Call
	  `chop_object_mark_as_untracked ()' before `free ()'.

	* src/indexer-tree.c (tree_stream_dtor): Don't call
	  `chop_decoded_block_tree_free ()'.
	  (tree_stream_close): Call `chop_decoded_block_tree_free ()', but don't
	  call `tree_stream_dtor ()'.

	* src/store-filtered.c (chop_filtered_block_store_t): Added a BACKEND_PS
	  field.
	  (fbs_ctor): New.
	  (chop_filtered_block_store_close): Take FILTERED->BACKEND_PS into
	  account.
	  (chop_filtered_store_open): Take a `chop_proxy_semantics_t' argument.

	* src/stream-filtered.c: Likewise.

	* src/stores.c (store_dtor): New function, calls `chop_store_close ()'.
	  This is consistent with how streams work.

	* src/store-qdbm.c (qdbm_dtor): Don't call `chop_store_close ()'.

	* src/store-tdb.c (tdb_dtor): Likewise.

	* src/store-gdbm.c (gdbm_dtor): Likewise.

	* src/store-remote.c (chop_remote_close): Don't call `remote_dtor ()'.

	* tests/features/stream-filtered.c: Updated.

	* utils/chop-archiver.c: Updated.

	* utils/chop-block-server.c: Updated.

	--This line, and those below, will be ignored--
	Files to commit:
	   <can't compute list>

	This list might be incomplete or outdated if editing the log
	message was not invoked from an up-to-date changes buffer!

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-14

2005-11-09  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed a bug in the anchor-based chopper's way of reading data.
	* src/chopper-anchor-based.c (read_sliding_window): Read until we got
	  WINDOW_SIZE bytes or end-of-stream is reached.  Only report
	  CHOP_STREAM_END when *SIZE is zero.

	* tests/interfaces/choppers.c (main): Randomly change the size of the
	  input.  When `chop_chopper_read_block ()' returns an error, make sure
	  AMOUNT is zero.

	* utils/chop-archiver.c: When VERBOSE, attach the log of the zip/unzip
	  filters used for streams.  When DEBUGGING, attach the log of the dummy
	  block stores to `stderr'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-13

	Updated the Guile bindings to the latest libchop and G-Wrap refinements.
	* src/store-remote.c (remote_dtor): Destroy REMOTE->LOG.

	* guile/block-indexers-spec.scm (block-indexer-make-fetcher): Added the
	  BF `out' argument.

	* guile/block-indexers-support.c (chop_block_indexer_make_fetcher_alloc):
	  New.
	  (chop_block_fetcher_fetch_alloc): Renamed
	  `chop_block_fetcher_fetch_alloc_u8vector ()'.

	* guile/cipher-support.c (chop_cipher_handle_cleanup): Expect a `void *'
	  pointer instead of an `SCM' object, according to the latest G-Wrap
	  updates.

	* guile/core-support.c (gwrap_chop_object_cleanup): Likewise.

	* guile/core-support.h: Updated accordingly.

	* guile/core-spec.scm (call-cg)[<chop-error-code-type>]: Set RESULT to
	  `SCM_BOOL_F' so that GCC doesn't mark it as unused.

	* guile/stores-support.c (sbs_ctor): Return `errcode_t' instead of
	  `void'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-12

	Fixed memory leaks, uninitialized variables and other things.
	* src/block-indexer-chk.c (cbf_dtor): Destroy FETCHER->LOG instead of
	  simply closing it.

	* src/block-indexer-hash.c (hbf_dtor): Likewise.

	* src/indexer-tree.c (tree_stream_dtor): Likewise.
	  (iht_dtor): Likewise.

	* src/store-dummy.c (dbs_dtor): Likewise.

	* src/stream-filtered.c (chop_filtered_stream_open): Initialize
	  PREFERRED_BLOCK_SIZE.

	* src/streams.c (stream_ctor): Initialize PREFERRED_BLOCK_SIZE.

	* src/chopper-anchor-based.c (ab_dtor): Likewise.
	  Also, removed the `#warning' when HAVE_LIGHTNING_H is defined.

	* src/indexers.c (chop_ascii_serialize_index_tuple): Destroy
	  BLOCK_FETCHER when done.

	* src/chopper-fixed-size.c (chop_fixed_chopper_read_block): Fixed the
	  amount of data to read from INPUT.

	--This line, and those below, will be ignored--
	Files to commit:
	   <can't compute list>

	This list might be incomplete or outdated if editing the log
	message was not invoked from an up-to-date changes buffer!

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-11

2005-11-08  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Added zlib stream filtering support to `chop-archiver'.
	*  utils/chop-archiver.c (use_zlib_filters): Renamed to
	   USE_ZLIB_BLOCK_FILTERS.
	   (use_zlib_stream_filters): New.
	   (options)[zip-input]: New option.
	   (do_retrieve): Handle USE_ZLIB_STREAM_FILTERS.
	   (process_command): Likewise.
	   (parse_opt): Handle the new `Z' option.
	   (main): Refer to USE_ZLIB_BLOCK_FILTERS.


	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-10

	Fixed a memory leak in the zlib filters.
	* src/filter-zlib-unzip.c (zlib_unzip_filter_dtor): New.
	  (chop_zlib_unzip_filter_init): Be more cautious.

	* src/filter-zlib-zip.c (zlib_zip_filter_dtor): New.
	  (chop_zlib_zip_filter_init): Be more cautious.

	* src/filters.c (filter_ctor): Initialize the `data' field of the fault
	  handlers.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-9

2005-11-03  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed a bug in the unzip filter; slightly improved the filter API.
	* include/chop/filters.h (chop_filter_finish_input_from_buffer): Added
	  the BYTES_READ argument.

	* src/filter-zip-push-pull.c (ZIP_PULL_METHOD): Use `break' instead of
	  `return'.  If *PULLED is non-zero, then always return zero.

	* src/filter-zlib-unzip.c (ZIP_CANT_PRODUCE_MORE): Compare ZRET to
	  `Z_STREAM_END'.  This fixes a potential endless loop when pulling from
	  an unzip filter.

	* src/filters.c (input_buffer_t): Added fields `read' and `prev_handler'.
	  (handle_input_fault_from_buffer): Increment IBUFFER->READ.
	  (chop_filter_set_input_from_buffer): Save the current input handler in
	  PREV_HANDLER.
	  (chop_filter_finish_input_from_buffer): Set the BYTES_READ argument.
	  Restore IBUFFER->PREV_HANDLER.
	  (chop_filter_through): Updated accordingly.

	* tests/interfaces/filters.c (SIZE_OF_INPUT): Increased.
	  (test_filter): New function (code formerly in `main ()').
	  (main): Call `test_filter ()' and a zip filter and then on an unzip
	  filter.

	* utils/chop-archiver.c (do_archive): Initialize ERR.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-8

	Implemented filtered streams and update Guile bindings accordingly.
	* src/stream-filtered.c: New file.

	* tests/features/stream-filtered.c: New file.

	* guile/streams-spec.scm: Depend on `filters'.  Added
	  `filtered-stream-open'.

	* guile/streams-support.c (chop_filtered_stream_open_alloc): New.

	* include/chop/streams.h (chop_filtered_stream_class): New.
	  (chop_filtered_stream_open): New.

	* src/Makefile.am (libchop_la_SOURCES): Added `stream-filtered.c'.

	* src/streams.c (stream_dtor): Call `chop_stream_close ()'.

	* src/stream-file.c (fs_dtor): Removed.

	* src/stream-mem.c (mem_stream_dtor): Removed.

	* tests/features/Makefile.am (check_PROGRAMS): Added `stream-filtered'.

	* tests/include/testsuite.h (test_debug): Added a newline to FMT.

	* tests/interfaces/cipher.c: Cosmetic change.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-7

2005-10-27  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented a dumb whole-stream chopper; augmented the doc.
	* src/chopper-whole-stream.c: New.

	* include/chop/choppers.h (chop_whole_stream_chopper_class): New.
	  (chop_whole_stream_chopper_open): New.

	* tests/interfaces/choppers.c (classes): Added
	  CHOP_WHOLE_STREAM_CHOPPER_CLASS.

	* doc/libchop.texi: Added indices.  Documented the object system, great.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-6

	Migration from <chop/serializable.h> to <chop/objects.h>.
	The migration from <chop/serializable.h> to <chop/objects.h>.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-5

2005-10-26  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Updated the Guile bindings.  Fixed things here and there.
	* guile/block-indexers-spec.scm: New.

	* guile/block-indexers-support.c: New.

	* guile/testsuite.scm: New.

	* guile/Makefile.am (binding_specs): Added `block-indexers-spec.scm'.
	  (libguile_chop_la_SOURCES): Added `block-indexers.c'.

	* guile/core-support.c (gwrap_chop_object_cleanup): Added assertions.

	* guile/indexers-spec.scm: Drop dependencies on `hash' and `cipher',
	  added a dependency on `block-indexers'.
	  (<index-handle>): Moved to `block-indexers-spec.scm'.
	  (hash-tree-indexer-open): Renamed to `tree-indexer-open'.
	  (indexer-index-block): Added the BI parameter.
	  (indexer-fetch-stream): Added the BF parameter.
	  (index-handle-ascii-serialize): Moved to `block-indexers-spec.scm'.
	  (index-handle-ascii-deserialize): Likewise.
	  (hash-tree-indexer-log): Renamed to `tree-indexer-log'.

	* guile/indexers-support.c: Updated likewise.

	* guile/store-stats-support.c (chop_stat_block_store_stats_alloc): Copy
	  field by field.

	* include/chop/block-indexers.h: Augmented the documentation.

	* include/chop/logs.h (chop_log_close): Just call `chop_log_detach ()'.
	  The rest is done in the destructor.

	* src/block-indexer-hash.c (hih_deserialize): Made slightly more robust.

	* src/chop-errors.et (CHOP_INDEXER_EMPTY_SOURCE): New error.

	* src/chop.c: New object tracking support code.

	* src/indexer-tree.c (chop_tree_indexer_blocks): If TOTAL_AMOUNT is zero,
	  then return CHOP_INDEXER_EMPTY_SOURCE.

	* src/indexers.c (chop_ascii_serialize_index_tuple): Minor fix.

	* src/logs.c (log_dtor): Call `chop_log_close ()' and then do the rest of
	  the job.
	  (chop_log_init): Made more robust.

	* src/store-dummy.c (dbs_dtor): New.  This fixes leaks.
	  (chop_dummy_block_store_block_exists): Return 0 when DUMMY->BACKEND is
	  NULL, rather than CHOP_ERR_NOT_IMPL.
	  (chop_dummy_block_store_close): If DUMMY->BACKEND is not NULL, close
	  it.
	  (chop_dummy_block_store_open): Improved.  Do not attach the log by
	  default.

	* src/store-stat.c (sbs_dtor): New.  This fixes leaks.
	  (chop_stat_block_store_close): Don't destroy STAT->STATS here, let the
	  destructor handle it.
	  (chop_block_store_stats_init): Made more robust.

	* src/stream-file.c (fd_dtor): Just call `chop_stream_close ()'.
	  (chop_file_stream_close): Call `munmap' and `close', but _not_
	  `chop_object_destroy ()'.  This is because when using Guile, we might
	  want to explicitly close the stream (in order to close the underlying
	  FD) while still having a consistent object at hand.

	* src/stream-mem.c (mem_stream_dtor): Just call `chop_stream_close ()'.
	  (chop_mem_stream_close): Same as for `chop_file_stream_close ()'.

	* tests/interfaces/block-indexers.c: Make sure `chop_block_indexer_index ()'
	  returns an object of class CHOP_INDEX_HANDLE_CLASS.

	* tests/interfaces/indexers.c: Make sure the indexer returns
	  CHOP_INDEXER_EMPTY_SOURCE for an empty input stream.  Also, make sure
	  `chop_indexer_index_blocks ()' returns an instance of
	  CHOP_INDEX_HANDLE_CLASS.

	* utils/chop-archiver.c: Added a few calls to `chop_object_destroy ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-4

2005-10-18  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented the CHK block indexer; added a doc stub.
	* doc/Makefile.am: New.

	* doc/libchop.texi: New.

	* Makefile.am (SUBDIRS): Added `doc'.

	* configure.ac: Updated.

	* src/block-indexer-chk.c: New.

	* include/chop/block-indexers.h (chop_chk_block_indexer_open): Added an
	  OWNS_CIPHER_HANDLE argument.

	* include/chop/cipher.h (chop_cipher_mode): New.

	* src/cipher.c (chop_cipher_mode): New.

	* src/Makefile.am (libchop_la_SOURCES): Added `block-indexer-chk.c'.

	* src/block-indexer-hash.c (hbi_ctor): Initialize `index_block'.
	  (hbi_deserialize): Fixed the ASCII deserialization.

	* src/chop-errors.et (CHOP_BLOCK_FETCHER_ERROR): New.

	* src/indexers.c (chop_ascii_serialize_index_tuple): Fixed an unneeded
	  trailing zero.

	* tests/interfaces/block-indexers.c (main): Initialize `random_data'.
	  Test an instance of `chop_chk_block_indexer_class'.

	* utils/chop-archiver.c (block_indexer_class_name): New global.
	  (block_indexer_ascii): New global.
	  (cipher_algo): Removed.
	  (options): Removed `--cipher', added `--block-indexer-class' and
	  `--block-indexer'.
	  (do_archive): Honor these new options.
	  (get_cipher_handle): Removed.
	  (parse_opt): Updated.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-3

2005-10-17  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed a bug in the tree indexer; renamed `hash_tree*' to `tree'.
	* src/indexer-hash-tree.c: Renamed to `indexer-tree.c'.

	* src/indexer-tree.c (chop_hash_tree_indexer_class): Renamed to
	  `chop_tree_indexer_class'.
	  (chop_hash_tree_indexer_open): Renamed to `chop_tree_indexer_open'.
	  (chop_key_block_init): New.
	  (chop_key_block_reinit): New.
	  (chop_key_block_destroy): New.
	  (chop_key_block_new): Use `chop_key_block_init ()'.
	  (chop_key_block_add_index): Use `chop_key_block_reinit ()'.

	* src/Makefile.am: Updated.

	* include/chop/indexers.h: Updated references to `hash_tree'.

	* src/chop.c: Likewise.

	* tests/interfaces/indexers.c: Updated.

	* utils/chop-archiver.c: Updated.

	* utils/chop-file.c: Updated.

	* src/block-indexer-hash.c (BINARY_SERIALIZATION_USES_MAGIC_BYTES): New
	  macro.
	  (hih_serialize): If the above macro is defined, add magic bytes.
	  (hih_deserialize): Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-2

2005-10-14  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Major overhaul that separates block indexing from stream indexing.
	* include/chop/serializable.h (chop_constructor_t):  Return `errcode_t'.
	  (chop_object_initialize):  Likewise.
	  (chop_deserializer_t):  New parameter BYTES_READ.

	* src/chop.c (chop_object_initialize):  Updated.

	* include/chop/block-indexers.h:  Now actually used.

	* include/chop/indexers.h:  Include the above one.
	  (chop_indexer_index_blocks):  Added a BLOCK_INDEXER parameter.
	  (chop_indexer_fetch_stream):  Likewise.
	  (chop_indexer_index_handle_class):  Removed.
	  (chop_indexer_alloca_index_handle):  Removed.
	  (chop_ascii_deserialize_index_tuple_s1):  New.
	  (chop_ascii_deserialize_index_tuple_s2):  New.
	  (chop_ascii_serialize_index_tuple):  New.x
	  (chop_hash_tree_indexer_open):  Simplified accordingly.

	* src/indexer-hash-tree.c (chop_indexer_t):  Moved away.
	  (chop_chk_index_handle_t):  Likewise.
	  In short: major overhaul that removed code related indexing of
	  individual blocks and uses block indexers/fetchers instead.

	* src/indexers.c:  New file.

	* src/block-indexers.c:  New file.

	* src/block-indexer-hash.c:  New file.

	* src/Makefile.am (libchop_la_LDFLAGS):  New.
	  (libchop_block_server_la_LDFLAGS):  New.
	  (libchop_la_SOURCES):  Updated.

	* tests/interfaces/indexers.c:  Updated.  Doesn't pass!

	* tests/interfaces/block-indexers.c:  New.

	* utils/chop-file.c:  Updated.

	* utils/chop-archiver.c:  Updated.

	* src/chop-errors.et (CHOP_BLOCK_INDEXER_ERROR):  New.

	* src/buffer.c (chop_buffer_init):  Reset BUFFER->SIZE.

	* guile/indexers-support.c:  New debugging support.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.2--patch-1

2005-09-23  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Adding wrapping of the error codes for the Guile bindings.
	* guile/filters-spec.scm:  Wrap the filter-related error codes.

	* guile/indexers-spec.scm:  Likewise.

	* guile/stores-spec.scm:  Likewise.

	* guile/core-spec.scm:  Wrap libchop's generic error codes.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-66

2005-09-21  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed an anchor-based-chopper bug, plus memory mgmt-related bugs.
	* src/chopper-anchor-based.c (sliding_window_unfull):  Return true if
	  WINDOW->SIZES[1] is zero and WINDOW->SIZES[0] < WINDOW->WINDOW_SIZE.
	  This fixes a corner-case bug.

	* include/chop/cipher.h (chop_cipher_copy):  New function

	* src/cipher.c (chop_cipher_copy):  New function.

	* src/indexer-hash-tree.c (chop_decoded_block_tree_init):  Copy
	  CIPHER_HANDLE.
	  (chop_hash_tree_fetch_stream):  Pass &TSTREAM->LOG instead of
	  &HTREE->LOG to `chop_decoded_block_tree_init ()'.

	* include/chop/logs.h (chop_log_attach_to_user):  Added a COPY_CTOR
	  argument.
	  (chop_log_user_data):  Added `const'.
	  (chop_log_user_logger):  Likewise.

	* src/logs.c (log_ctor):  Initialize LOG->COPY_CTOR.
	  (chop_log_mimic):  Use PARENT->COPY_CTOR when available.

	* guile/logs-support.c (scm_log_copy_ctor):  New function.
	  (chop_log_attach_to_scheme_user):  Updated.

	* guile/store-stats-support.c (chop_stat_block_store_stats_alloc):  Copy
	  RESULT->NAME.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-65

2005-09-20  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed the `chopper-anchor-based' test.
	* tests/features/chopper-anchor-based.c (ITERATION_COUNT):  New macro.
	  (do_test):  New function.
	  (main):  Call `do_test ()' ITERATION_COUNT times.
	  (compare_block_boundaries):  Skip offsets from REF_OFFSETS that occur
	  within WINDOW_SIZE bytes after the insertion point.  Don't expect
	  INSERTION_BLOCK_COUNT to be greater than REF_BLOCK_COUNT.  Added debugging
	  output.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-64

2005-09-19  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed the anchor-based chopper;  added a test-case for it.
	* src/chopper-anchor-based.c (compile_multiplication_function):  Fixed
	  the instructions that sets the return value (when INLINE_LIGHTNING_CODE
	  is not set).
	  (sliding_window_dest_buffer):  Don't set WINDOW->OFFSET to zero in the
	  last case;  just %= it to WINDOW->WINDOW_SIZE.

	* tests/features/chopper-anchor-based.c:  New file.

	* tests/features/Makefile.am:  Updated.

	* tests/include/testsuite.h (test_init_random_seed):  New function.

	* tests/features/filter-zlib.c (main):  Call `test_init_random_seed ()'.

	* tests/interfaces/indexers.c (main):  Likewise.

	* tests/interfaces/choppers.c (main):  Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-63

	Cleaned up the Guile bindings;  fixed a few more memory leaks.
	* guile/choppers-support.c (chop_chopper_close_dealloc):  Removed
	  (unneeded).  Use `scm_malloc ()' instead of `malloc ()'.
	  (chop_chopper_read_block_alloc_u8vector):  Return BUFFER at the end.

	* guile/cipher-spec.scm (<cipher-handle>):  Specify the
	  `wcp-free-function' field.

	* guile/cipher-support.c (chop_cipher_handle_cleanup):  New function.

	* guile/core-spec.scm (<chop-object-type>):  Removed.  Also removed
	  related code that was commented out.

	* guile/core-support.h (gwrap_chop_object_set_dependencies):  Removed.

	* guile/filters-support.c (chop_filter_dealloc):  Removed.

	* guile/indexers-support.c (chop_indexer_close_dealloc):  Removed.
	  (chop_index_handle_close_dealloc):  Removed.
	  (chop_hash_tree_indexer_open_alloc):  Use `scm_malloc ()'.

	* guile/logs-support.c (_chop_log_destroy):  Removed.

	* guile/store-stats-support.c (chop_block_store_stats_dealloc):  Removed.

	* guile/stores-support.c (chop_store_close_dealloc):  Removed.

	* guile/streams-support.c (chop_stream_close_dealloc):  Removed.

	* include/chop/logs.h (chop_log_t):  Now declared as a run-time class.

	* include/chop/serializable.h (_STRINGIFY):  Renamed to `CHOP_STRINGIFY'.

	* src/buffers.c (_chop_buffer_return):  If the pool is full, deallocated
	  BUFFER->BUFFER.

	* src/cipher.c (_STRINGIFY):  Renamed to `STRINGIFY'.

	* src/logs.c (log_ctor):  New function.
	  (log_dtor):  New function.
	  (chop_log_class):  New variable.
	  (chop_log_init):  Call `chop_object_initialize ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-62

2005-09-16  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed memory leaks in the Guile bindings and elsewhere.
	* guile/README:  New file.

	* guile/core-support.c:  New file.

	* guile/core-support.h:  New file.

	* src/streams.c:  New file.

	* guile/Makefile.am (binding_specs):  New variable.
	  (CLEANFILES):  New variable.
	  (libguile_chop_la_SOURCES):  Added `core-support.c'.

	* guile/choppers-spec.scm:  Use `(g-wrap c-codegen)';  include
	  `core-support.h';  use `wrap-as-chop-object!';  use the new
	  `aggregated' typespec where it makes sense.

	* guile/cipher-spec.scm:  Likewise.

	* guile/filters-spec.scm:  Likewise.

	* guile/hash-spec.scm:  Likewise.

	* guile/indexers-spec.scm:  Likewise.

	* guile/logs-spec.scm:  Likewise.

	* guile/stores-spec.scm:  Likewise.
	  (wrap-value-cg):  For <chop-block-key-type> arguments, call
	  `chop_block_key_free ()' when we're done.

	* guile/stores-support.c (chop_store_read_block_alloc_u8vector):  Return
	  the buffer once we're done.
	  (chop_scheme_block_store_class):  Use `chop_hybrid_scheme_class' as its
	  meta-class.
	  (scm_store_mark):  New function.
	  (chop_make_scheme_block_store):  Return a raw SCM instead of a C
	  pointer.  Keep a copy of this SMOB into SCM_STORE->THIS_SMOB in order
	  to not re-create a new SMOB every time in the various methods.
	  (sbs_ctor):  New name of `scheme_block_store_ctor ()'.
	  (sbs_dtor):  New function.

	* guile/streams-support.c:  Use `scm_malloc ()' instead of `malloc ()'.

	* guile/store-stats-support.c (chop_stat_block_store_open_alloc):  Always
	  pass a TAKEOVER argument equal to zero.

	* guile/core-spec.scm (wrap-as-chop-object!):  New method.

	* include/chop/serializable.h (chop_class_inherits):  Leave the loop once
	  we've reached CHOP_CLASS_CLASS.

	* include/chop/store-stats.h (chop_block_store_stats_t):  Instead of
	  `virgin_writes', two fields:  `virgin_blocks' and `virgin_bytes'.

	* src/store-stats.c:  Updated accordingly.

	* src/Makefile.am (libchop_la_SOURCES):  Updated.

	* src/store-gdbm.c (chop_gdbm_block_store_class):  Define a destructor.
	  (chop_gdbm_store_open):  Call `chop_object_initialize ()'.

	* src/store-qdbm.c:  Likewise.

	* src/store-tdb.c:  Likewise.

	* src/store-remote.c:  Likewise.

	* src/stream-file.c:  Likewise.

	* src/stream-mem.c:  Likewise.

	* src/store-generic-db.c (DB_CLOSE_METHOD):  Make sure GDBM->DB is not
	  NULL.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-61

2005-09-13  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed several memory leaks.
	* guile/indexers-support.c (chop_indexer_close_dealloc):  Call
	  `chop_object_destroy ()'.
	  (chop_index_handle_close_dealloc):  Likewise.

	* include/chop/indexers.h (chop_indexer_t):  Documented the fact that
	  users should eventually call `chop_object_destroy ()'.

	* src/chopper-anchor-based.c (anchor_based_ctor):  Renamed to `ab_ctor'.
	  (ab_dtor):  New function.
	  (chop_anchor_based_chopper_init):  Initialize WINDOW_FPR.
	  (chop_anchor_chopper_close):  Call `ab_dtor ()'.

	* src/indexer-hash-tree.c (iht_ctor):  New function.
	  (iht_dtor):  New function.
	  (chop_block_tree_free):  Free BLOCK and BLOCK->KEYS.
	  (chop_hash_tree_indexer_open):  Delegated some work to `iht_ctor ()'.
	  (chop_decoded_block_tree_init):  Return `errcode_t' instead of `void'.
	  (chop_decoded_block_tree_free):  Free BLOCK and BLOCK->BUFFER.
	  (hash_tree_stream_init):  Renamed to `hash_tree_stream_ctor'.
	  (hash_tree_stream_dtor):  New function.
	  (chop_hash_tree_fetch_stream):  Delegated part of the work to
	  `hash_tree_stream_ctor ()'.
	  (hash_tree_stream_close):  Call `hash_tree_stream_dtor ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-60

2005-09-12  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Updated and augmented the Guile bindings.
	* {arch}/=tagging-method:  Switched to `tagline'.

	* guile/filters-spec.scm:  New file.

	* guile/filters-support.c:  New file.

	* guile/store-stats-spec.scm:  New file.

	* guile/store-stats-support.c:  New file.

	* guile/Makefile.am:  Updated.

	* guile/choppers-spec.scm (anchor-based-chopper-open):  Updated.
	  (chopper-generic-open):  New wrapped function.

	* guile/choppers-support.c:  Updated.

	* guile/stores-support.c:  Use `scm_malloc ()' instead of `malloc ()'.

	* include/chop/serializable.h (chop_class_inherits):  New function.
	  (chop_object_is_a):  Use the above function.

	* include/chop/store-stats.h:  Added accessors.

	* src/Makefile.am (AM_CFLAGS):  Added `-fno-strict-aliasing', moved from
	  `AM_CPPFLAGS'.

	* src/indexer-hash-tree.c (read_ascii_hash):  Removed the `inline'
	  keyword since it is not inlinable.

	* src/store-stat.c (chop_stat_block_store_close):  Initialize ERR.
	  (chop_stat_block_store_stats):  Take and return `const' things.

	* utils/Makefile.am (AM_CFLAGS):  Added `-fno-strict-aliasing'.

	* utils/chop-show-anchors.c (stats_display):  Fixed printf format for
	  MAGIC_FPR_MASK.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-59

2005-09-09  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Augmented and improved the test suite;  fixed a couple of bugs.
	* tests/include/testsuite.h:  New file.

	* tests/features/Makefile.am:  Use the `AM_'-prefixed variables.

	* tests/features/filter-zlib.c:  Use the `test_' utilities.

	* tests/interfaces/class-lookup.c:  Likewise.

	* tests/interfaces/choppers.c:  Likewise.

	* tests/interfaces/cipher.c:  Likewise.

	* tests/interfaces/stores.c:  Likewise.  Also added the QDBM block store
	  class if available.  Added a test for `chop_store_block_exists ()'.

	* tests/interfaces/indexers.c:  New file.

	* src/store-stat.c (chop_stat_block_store_open):  Initialize the
	  `takeover' field.

	* src/chop-archiver.c (main):  Use 100 keys per block, instead of 12,
	  when opening the indexer.  If SHOW_STATS, always open a stat store for
	  both the data store and the meta-data store.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-58

2005-09-08  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed a bug from the previous revision;  added a stat block store.
	* include/chop/block-indexers.h:  New file.

	* include/chop/store-stats.h:  New file.

	* include/Makefile.am:  Updated.

	* src/store-stat.c:  New file.

	* src/chop.c:  Include <chop/store-stats.h>.

	* src/store-dummy.c (chop_block_store_class):  Definition moved to
	  `stores.c'.
	  (chop_dummy_block_store_open):  Call `chop_object_initialize ()'.

	* src/store-smart.c (chop_smart_block_store_open):  Likewise.

	* src/stores.c (store_ctor):  New function.

	* src/indexer-hash-tree.c (chop_key_block_fill_header):  Fixed a bug
	  introduced in the previous revision.

	* src/Makefile.am:  Updated.

	* utils/Makefile.am:  Use `AM_CFLAGS' and `AM_CPPFLAGS' instead of
	  `CFLAGS' and `CPPFLAGS'.

	* utils/chop-archiver.c (show_stats):  New variable.
	  (options)[show-stats]:  New option.
	  (main):  Take into account the new option.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-57

	Fixed an indeterminism-yielding bug in `indexer-hash-tree.c'.
	* src/buffers.c (ENABLE_POOL):  New macro.  Ifdef'd all the relevant
	  code.

	* src/indexer-hash-tree.c (chop_chk_index_handle_t):  Increased the size
	  of `block_id' and `hash_key'.
	  (chop_key_block_fill_header):  Initialize the unused bytes below the
	  KEY_BLOCK_HEADER_SIZE boundary.  This fixes a bug visible through
	  Valgrind, and which yielded indeterminism in the meta-data block
	  contents, therefore potentially changing the handle produced for a given
	  stream, even if its content do not change.

	* utils/chop-archiver.c (options)[db-file]:  New option.
	  (db_file_name):  New variable.
	  (main):  Close METASTORE only if it points to a store other than STORE.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-56

2005-09-06  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Augmented the toy RCS script.
	* utils/chop-rcs.sh (find_tree_root):  New function.
	  (initialize):  New function.
	  (changes):  New command.
	  (tree-root):  New command.

	* utils/chop-archiver.c:  Very slightly augmented the doc string.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-55

	Improved the flexibility wrt. chopping of the various tools.
	* include/chop/choppers.h (chop_chopper_class_class):  Added one
	  parameter to the `generic_open' method.
	  (chop_chopper_generic_open):  Added the TYPICAL_BLOCK_SIZE parameter.

	* src/chopper-anchor-based.c
	  (chop_anchor_based_chopper_t)[magic_fpr_mask]:  New field.
	  (ab_generic_open):  Updated.
	  (IS_ANCHOR_FINGERPRINT):  Updated.
	  (chop_anchor_based_chopper_init):  Added the MAGIC_FPR_MASK parameter.
	  (chop_anchor_chopper_read_block):  Use the value of MAGIC_FPR_MASK.

	* src/chopper-fixed-size.c (chop_fs_generic_open):  Updated.

	* utils/chop-archiver.c (typical_block_size):  New variable.
	  (options):  New `block-size' option.

	* utils/chop-show-anchors.c (options):  New `magic-fpr-mask' option.

	* utils/chop-show-similarities.c (options):  Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-54

	Slightly augmented the tools that relate to the anchor-based chopper.
	* include/chop/chop.h (_CHOP_UNUSED):  New macro.

	* include/chop/logs.h (_chop_log_printf):  Marked as `_CHOP_UNUSED'.

	* src/chopper-anchor-based.c (chop_anchor_chopper_read_block):  When an
	  anchor is detected, push the contents of the window as well.  This also
	  further simplifies the algorithm.
	  (ab_generic_open):  Use a default window size of 48 bytes.

	* utils/chop-show-anchors.c:  Added options for debugging, statistics,
	  verbosity, and window size.

	* utils/chop-show-similarities.c:  Added options for debugging and window
	  size.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-53

2005-09-05  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Bugfix in `stream-file.c';  workaround in `store-tdb.c'.
	* src/stream-file.c (chop_file_stream_open):  Fixed the oldest bug out
	  there:  arg 2 of `madvise' was uninitialized.

	* src/store-tdb.c (chop_tdb_store_open):  Pass `TDB_NOLOCK' to `tdb_open ()' 
	  in order to work around a bug found on the PPC.

	* include/chop/logs.c (_chop_log_printf):  Don't declare it inline since
	  it's not inlinable.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-52

	Optimized the sliding window mechanism in `chopper-anchor-based.c'.
	* include/chop/logs.h (chop_log_printf):  Made a macro so that it could
	  be inlined.
	  (_chop_log_printf):  New name of the actual function.

	* src/chopper-anchor-based.c (sliding_window_t)[raw_size]:  New field.
	  [raw_window]:  New field.
	  (sliding_window_init):  Allocate contiguous subwindows.
	  (read_sliding_window):  Pad data with zeros when needed.
	  (sliding_window_get_raw_offset):  New macro.
	  (sliding_window_ref):  New macro.
	  (sliding_window_first_char):  Rewritten, became a macro.
	  (sliding_window_last_char):  Likewise.
	  (sliding_window_destroy):  Updated.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-51

2005-09-02  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented inlining of Lightning code in chopper-anchor-based.c;  turns out to be inefficient.
	* src/chopper-anchor-based.c (INLINE_LIGHTNING_CODE):  New macro.
	  (jit_multiplier_func_t):  New typedef.
	  (jit_multiplier_t):  Define it as a struct when INLINE_LIGHTNING_CODE
	  is defined.
	  (JIT_MULTIPLIER_INIT):  New macro.
	  (JIT_MULTIPLIER_FUNC):  New macro.
	  (compile_multiplication_function):  If INLINE_LIGHTNING_CODE, compile
	  code that can be inlined eventually.
	  (compute_next_window_fingerprint):  If INLINE_LIGHTNING_CODE, well,
	  inline Lightning code by patching the right instructions.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-50

	Partially rewrote and hopefully fixed the anchor-based chopper.
	* src/Makefile.am (AM_CFLAGS):  Added `-Winline'.

	* src/chopper-anchor-based.c (sliding_window_t):  Changed the `offset'
	  field into an single integer instead of an array.
	  (sliding_window_end):  Renamed to `sliding_window_unfull'.
	  (sliding_window_end_offset):  Fixed
	  (sliding_window_skip):  New function.
	  (sliding_window_increase_offset):  Renamed to
	  `sliding_window_increment_offset' and changed the semantics.
	  (chop_anchor_chopper_read_block):  Simplified and (hopefully) fixed a
	  bug.

	* tests/interfaces/choppers.c:  Instrumented as a debugging aid.

	* utils/chop-show-anchors.c:  Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-49

2005-09-01  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed the `chop_log_t' API to avoid memory leaks.
	* include/chop/logs.h (chop_log_t):  Added the `dtor' field.
	  (chop_log_attach_to_user):  Added a `dtor' parameter.
	  (chop_log_detach):  Call `dtor' if available.

	* src/logs.c (chop_log_mimic):  Take `dtor' into account.

	* guile/logs-support.c (chop_log_attach_to_scheme_user):  Updated
	  accordingly.  Call `scm_gc_protect_object ()' on PROC.
	  (scm_log_dtor):  New function.

	* tests/interfaces/choppers.c:  Strengthened a bit.

	* utils/chop-store-convert.c (main):  Show the number of pairs converted.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-48

	Implemented missing methods in `store-filtered.c'.
	* src/store-filtered.c:  Implemented the `block_exists', `delete_block',
	  `first_key' and `next_key' methods that were missing and uninitialized
	  in `chop_filtered_store_open ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-47

2005-08-31  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Added experimental support for QDBM;  new tool `chop-store-convert'.
	* src/store-qdbm.c:  New file.

	* src/store-smart.c:  New file.

	* configure.ac:  Look for QDBM.

	* utils/chop-store-convert.c:  New file.

	* guile/stores-spec.scm (smart-block-store-open):  New binding.
	  (file-based-block-store-open):  New binding.

	* guile/stores-support.c (chop_smart_block_store_open_alloc):  New
	  function.
	  (chop_file_based_store_open_alloc):  New function.

	* include/chop/stores.h (chop_qdbm_block_store_class):  New decl.
	  (chop_smart_block_store_class):  New decl.
	  (chop_qdbm_store_open):  New decl.
	  (chop_smart_block_store_open):  New decl.
	  (chop_smart_block_store_log):  New decl.

	* src/Makefile.am (libchop_la_SOURCES):  Account for `store-qdbm.c' and
	  `store-smart.c'.  Use `AM_CPPFLAGS' and `AM_CFLAGS' instead of their
	  non-prefixed counterparts.

	* src/chopper-anchor-based.c (compile_multiplication_function):  Started
	  an experimental thing to inline generated code.

	* src/store-remote.c (chop_remote_block_exists):  Fixed an uninitialized
	  variable.

	* utils/Makefile.am (bin_PROGRAMS):  Updated.
	  (LDADD):  Simplified.

	* utils/chop-store-list-entries.c:  Renamed to `chop-store-list.c'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-46

2005-08-29  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Minor change to the build process, minor bug fix, use Lightning in `chopper-anchor-based.c'.
	* configure.ac:  Use `AM_PATH_LIBGCRYPT' in order to check whether the
	  right `libgcrypt' is here.  Look for <lightning.h>.

	* src/indexer-hash-tree.c (chop_decoded_block_fetch):  Removed the
	  assertion, return `CHOP_INDEXER_ERROR' and log a message instead.

	* src/chopper-anchor-based.c:  Look for <lightning.h> and compile and use
	  `compile_multiplication_function ()' if available.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-45

2005-08-26  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Have a working block server;  cleaned up the build system.
	* README:  Added information about the requirements.

	* src/Makefile.am (BUILT_SOURCES):  Augmented so that hopefully `make'
	  will compile the two RPC headers before compiling `store-server.c' and
	  `store-remote.c'.

	* tests/interfaces/Makefile.am (TESTS):  New variable.

	* tests/features/Makefile.am (TESTS):  New variable.

	* src/chop-errors.et (CHOP_DESERIAL_TOO_SHORT):  Fixed typo.

	* utils/chop-block-server.c (content_hash_enforced):  New variable.
	  (no_collision_check):  New variable.
	  (is_valid_hash_key):  New function.
	  (VALIDATE_HASH_KEY):  New macro.
	  (handle_say_hello):  Always return 1.
	  (handle_write_block):  Call `VALIDATE_HASH_KEY ()' and look for
	  collisions.
	  (options):  Added new options.
	  (argp):  Added the argument documentation.

	* ChangeLog:  New file.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-44

2005-08-25  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Started implementing a toy RCS and a simple block server.
	* utils/chop-rcs.sh:  New file.

	* utils/chop-archiver.c (do_archive):  Unless `--verbose' is passed,
	  print the handle on a single line so that external tools can use it.

	* utils/chop-block-server.c:  New file.

	* utils/Makefile.am:  Account for the two new files.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-43

2005-08-24  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Added an `autogen.sh'.
	* autogen.sh:  New file.


	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-42

2005-08-18  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented Guile bindings for block store traversal.
	* guile/stores-spec.scm (<chop-block-key-type>):  Added support for `out'
	  parameters.  This makes it possible to use `store-first-key',
	  `store-next-key', etc.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-41

2005-08-17  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed the Scheme block store bindings.
	* guile/stores-support.c (scm_store_write_block):  Pass the `content'
	  argument to the Scheme procedure.  Create a copy of both the buffer
	  and key.

	* guile/stores-spec.scm (post-call-arg-cg <chop-block-key-type>):
	  Release the array handle and unprotect the array.
	  (unwrap-value-cg <chop-block-key-type>):  Call `scm_gc_protect_object ()'.

	* guile/core-spec.scm (call-cg <chop-errcode-type>):  Pass a list as a
	  second argument to `scm_throw ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-40

2005-08-12  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed the weak hash cipher key phenomenon using random keys.
	* src/chop-errors.et (CHOP_CIPHER_WEAK_KEY):  New error.
	  (CHOP_CIPHER_ERROR):  New error.

	* src/chop.c (chop_init):  Initialize CHOP_CIPHER_LOG.

	* include/chop/cipher.h (chop_cipher_log):  New declaration.
	  (chop_randomize):  Likewise.

	* src/cipher.c (chop_cipher_log):  New variable.
	  (chop_cipher_set_key):  Log error messages.
	  (chop_cipher_encrypt):  Likewise.

	* src/indexer-hash-tree.c (chop_hash_tree_index_block):  Use `errcode_t'
	  instead of `gcry_error_t' when chop functions were actually used;
	  handle situations where `chop_cipher_set_key ()' returns
	  CHOP_CIPHER_WEAK_KEY by creating a random key with `chop_randomize ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-39

2005-08-11  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Completed the block store interface.
	* include/chop/stores.h (chop_store_block_exists):  New function.
	  (chop_store_delete_block):  New function.
	  (chop_store_first_key):  New function.
	  (chop_store_next_key):  New function.

	* src/chop-errors.et (CHOP_STORE_END):  New error.

	* src/store-gdbm.c:  Implement the above methods.

	* src/store-tdb.c:  Likewise.

	* src/store-generic-db.c:  Likewise.

	* src/store-dummy.c:  Likewise.

	* src/store-remote.c:  Likewise.

	* utils/gdbm-list-entries.c:  Renamed to `chop-store-list-entries.c'.  Use
	  chop's store interface instead of GDBM's.

	* utils/Makefile.am (bin_PROGRAMS):  Updated accordingly.

	* guile/stores-spec.scm:  Updated.

	* guile/stores-support.c:  Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-38

2005-06-30  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Added a Guile wrapper of logs.
	* src/store-remote.c (chop_remote_read_block):  Set *READ on exit.

	* guile/logs-spec.scm:  New file.

	* guile/logs-support.c:  New file.

	* guile/indexers-spec.scm (hash-tree-indexer-log):  New procedure.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-37

	Added support for block stores written in Scheme.
	* guile/core-spec.scm (<chop-raw-u8vector>):  Renamed to
	  `<chop-raw-scheme-type>'.

	* guile/hash-spec.scm (hash-buffer):  Reflect the above modification.

	* guile/choppers-spec.scm (chopper-read-block):  Likewise.

	* guile/streams-spec.scm (mem-stream-open):  Likewise.

	* guile/stores-spec.scm (make-block-store):  New procedure.

	* guile/stores-support.c (guile_chop_store_type):  New variable.
	  (scm_store_read_block):  New function.
	  (scm_store_write_block):  New function.
	  (scm_store_close):  New function.
	  (scm_store_sync):  New function.
	  (chop_make_scheme_block_store):  Completed.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-36

2005-06-29  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Updated and augmented the G-Wrap interface wrapping specifications.
	* guile/cipher-spec.scm:  New file.

	* guile/cipher-support.c:  New file.

	* guile/choppers-support.c:  Removed GCC warnings.

	* guile/indexers-spec.scm (hash-tree-indexer-open):  Updated.

	* guile/indexers-support.c (chop_hash_tree_indexer_open_alloc):  Likewise.

	* guile/Makefile.am (libguile_chop_la_SOURCES):  Updated.
	  (EXTRA_DIST):  New variable.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-35

2005-06-23  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Finished implementing support for decryption.  Fully working now.
	* README:  New file.

	* configure.ac:  Look for <netinet/in.h>.  Allow for G-Wrap version numbers
	  higher than 1.9.5.

	* include/chop/chop.h (_CHOP_BEGIN_DECLS):  New macro.
	  (_CHOP_END_DECLS):  New macro.
	  (_CHOP_PURE_FUNC):  New macro.

	* include/chop/streams.h:  Use the new macros.

	* include/chop/logs.h:  Likewise.

	* include/chop/hash.h:  Likewise.

	* include/chop/cipher.h:  Likewise.

	* include/chop/serializable.h:  Likewise.

	* src/chop.c (chop_hex_string_to_buffer):  Added the END argument.

	* src/store-dummy.c (chop_dummy_block_store_read_block):  Don't issue
	  a warning if BUFFER's size is different from *SIZE when ERR is not null.

	* src/chop-errors.et (CHOP_INDEXER_ERROR):  New error.

	* src/indexer-hash-tree.c (chop_chk_index_handle_t):  Added a BLOCK_SIZE
	  field.
	  (chk_index_handle_serialize):  Issue the block size.  Support hash keys
	  with size different from that of hash keys produced by HASH_KEY_HASH_METHOD.
	  (chk_index_handle_deserialize):  Likewise.
	  (chop_chk_index_handle_size):  Account for the size of the BLOCK_SIZE field.
	  (cipher_make_suitable_key):  New function.
	  (chop_hash_tree_index_block):  Store the block size within key blocks.
	  Use suitable hash key sizes.
	  (chop_decoded_block_decode_header):  Return an error code when the magic
	  bytes aren't there.
	  (chop_decoded_block_fetch):  Support block sizes and different hash key
	  sizes.  Pay attention to the value returned by
	  `chop_decoded_block_decode_header ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-34

2005-06-22  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Started implementing decryption in the hash tree indexer; not fully functional yet.
	* include/chop/cipher.h:  Provide a complet ciphering API.
	* src/cipher.c:  Likewise.  Made `chop_cipher_handle_t' a pointer to a
	  structure locally malloced and somewhat different from gcrypt's cipher
	  handles.
	* tests/interfaces/cipher.c:  New file.
	* src/indexer-hash-tree.c (chk_index_handle_serialize):  Fixed the ASCII
	  serialization.
	  (KEY_BLOCK_HEADER_SIZE):  Added two bytes.
	  (KEY_BLOCK_MAGIC_1):  New macro.
	  (KEY_BLOCK_MAGIC_2):  New macro.
	  (chop_key_block_fill_header):  Add two magic bytes.
	  (chop_decoded_block_decode_header):  Check validity of the two magic bytes.
	  (chop_hash_tree_index_block):  Pad blocks with zeroes.  Use the right
	  ciphering key (was using a random key!).
	  (chop_key_block_add_index):  Check the return value of
	  `chop_key_block_flush ()'.
	  (chop_block_tree_flush):  Likewise.
	  (ciphering_context_t):  New structure.
	  (chop_decoded_block_fetch):  Get a `ciphering_context_t' object; perform
	  decryption based on this object.
	  (chop_decoded_block_next_child):  Account for hash keys when reading
	  a key block.
	* src/store-dummy.c (chop_dummy_block_store_read_block):  Issue a warning
	  if *SIZE is different from the size of BUFFER.
	* src/store-filtered.c (chop_filtered_block_store_read_block):  Fixed a bug
	  where *SIZE was potentially different from the size of BUFFER.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-33

2005-06-17  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented content-hash ciphering (decryption not implemented yet).
	* include/chop/indexers.h (chop_hash_tree_indexer_open):  Added a new
	  CIPHER_HANDLE parameter.

	* include/chop/cipher.h (chop_cipher_open):  Removed the KEY and KEY_SIZE
	  arguments.

	* src/cipher.c (chop_cipher_open):  Likewise.

	* src/chop.c:  Removed the declaration of `chop_hash_index_handle_class'.

	* src/indexer-hash-tree.c (chop_hash_index_handle_class):  Removed.
	  (chop_chk_index_handle_t):  Improved.  This is now the only index class
	  being used here.
	  (chop_hash_tree_index_block):  Perform content-hash ciphering.
	  (key_block_t):  Support content-hash keys.
	  (key_block_tree_t):  Likewise.

	* utils/chop-archiver.c:  Added a `--cipher' option.

	* utils/chop-file.c:  Support the new hash-tree indexer API.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-32

2005-05-19  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented the ciphering wrapper of gcrypt.
	* src/gcrypt-enum-mapping.h:  New file.
	* src/hash.c:  Include and use "gcrypt-enum-mapping.h".
	* src/cipher.c:  New file.
	* include/chop/cipher.h:  New file.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-31

2005-05-03  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Minor changes.
	* src/indexer-hash-tree.c (chop_block_tree_flush):  Don't verify assertion
	  when DEPTH is zero (this assertion does not hold for empty files).
	* guile/indexers-spec.scm (index-handle-ascii-deserialize):  New wrapped
	  function.
	* guile/indexers-support.c (chop_index_handle_ascii_deserialize):  New function.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-30

2005-04-26  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed various things, added test cases, implemented a memory-backed stream class.
	* src/stream-mem.c:  New file.
	* src/stream-file.c (chop_file_stream_t):  Now declared here.
	* include/chop/streams.h (chop_file_stream_t):  Moved type definition
	  to `stream-file.c'.
	  (chop_mem_stream_open):  New function declaration.
	* src/chopper-anchor-based.c (multiply_with_prime_to_the_ws):  Fixed
	  pesky warning.
	  (chop_anchor_chopper_read_block):  Don't return `CHOP_STREAM_END' when
	  BUFFER isn't empty.
	* include/chop/choppers.h (chop_chopper_class_t):  New metaclass.
	  (chop_fixed_size_chopper_class):  Made a `chop_chopper_class_t'.
	  (chop_anchor_based_chopper_class):  Likewise.
	* src/indexer-hash-tree.c (chop_hash_tree_indexer_open):  Call
	  `chop_object_initialize ()'.
	* utils/chop-archiver.c (options):  Added `-C'.
	  (process_command):  Use `chop_chopper_generic_open ()'.
	* tests/interfaces/choppers.c:  New file.
	* guile/store-ctors-dtors.c:  Renamed to `stores-support.c'.
	* guile/stream-ctors-dtors.c:  Likewise.
	* guile/streams-spec.scm:  Added `mem-stream-open'.
	* guile/core-spec.scm:  Added `unwrap-value-cg' for `<chop-raw-u8vector>'.
	* src/extract-classes.sh:  Use `void *' instead of `chop_class_t *' so as
	  to shut up GCC warnings.
	* src/chop.c (chop_class_lookup):  Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-29

2005-04-19  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented a TDB-based block store.
	* src/stores.c:  New file.
	* src/store-tdb.c:  New file.
	* src/store-generic-db.c:  New file.
	* src/store-gdbm.c:  Include "store-generic-db.c".  Define the `generic_open'
	  method of `chop_file_based_store_class_t'.
	* include/chop/serializable.h (CHOP_DEFINE_RT_CLASS_WITH_METACLASS):  New macro.
	  (CHOP_DECLARE_RT_CLASS_WITH_METACLASS):  New macro.
	* include/chop/stores.h (chop_file_based_store_class_t):  New metaclass.
	  (chop_file_based_store_open):  New function.
	  (chop_tdb_block_store_class):  New class.
	  (chop_gdbm_block_store_class):  Made it a `chop_file_based_store_class_t'.
	  (chop_gdbm_store_open):  Added the OPEN_FLAGS argument.
	* src/extract-classes.sh:  Account for the `WITH_METACLASS' macro variants.
	* utils/chop-archiver.c:  Added a `-S' switch.
	* tests/interfaces/stores.c:  New test.
	* configure.ac:  Check for `tdb.h' and `libtdb'.
	* guile/stores-spec.scm (tdb-block-store-open):  New wrapped function.
	* guile/store-ctors-dtors.c (chop_tdb_block_store_open_alloc):  New function.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-28

2005-04-07  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed the class lookup mechanism; added a test case.
	* src/chop.c (chop_class_lookup):  Fixed the call to
	  `chop_lookup_class_entry' (pass strlen + 1).
	* src/Makefile.am (class-lookup.c):  Ask gperf to produce read-only tables.
	* include/chop/serializable.h:  Added comments for `chop_class_lookup ()'.
	* tests/interfaces/class-lookup.c:  New file.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-27

	Implemented O(1) class lookup by name using GPerf.
	* include/chop/serializable.h (chop_class_lookup):  New function.
	* src/chop.c:  Likewise.
	* src/extract-classes.sh:  New file.
	* src/Makefile.am:  Generate `class-lookup.c' when GPerf is available.
	* configure.ac:  Look for GPerf.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-26

2005-04-06  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Completed the RPC specs and the remote block store.
	* rpc/block_rstore.x:  Completed the RPC interface.
	* include/chop/block-server.h:  Added typed hooks for each RPC.
	* src/store-server.c:  Likewise.
	* src/store-remote.c:  Implemented read, write, sync and close.
	* src/store-gdbm.c (chop_gdbm_read_block):  Set *SIZE.
	* utils/chop-archiver.c:  Added the `--remote' option.
	* guile/streams-spec.scm:  Added `stream-close'.
	* guile/stores-spec.scm:  Added `store-sync' and `store-close'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-25

2005-04-01  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Some more RPC work.
	* include/chop/blocks.h:  Removed.
	* include/chop/block-server.h:  New file.
	* include/Makefile.am:  New file.
	* src/store-server.c:  New file.
	* src/Makefile.am (lib_LTLIBRARIES):  Added `libchop-block-server.la'.
	* rpc/block_rstore.x:  Minor changes.
	* src/store-remote.c:  Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-24

2005-03-31  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Got the main components available from Guile.
	* include/chop/indexer-hash-tree.h:  Removed.
	* include/chop/indexers.h:  Added stuff formerly in `indexer-hash-tree.h';
	  made `chop_indexer_t' a run-time class.
	* src/indexer-hash-tree.c:  Added run-time class stuff.
	* utils/chop-file.c:  No longer rely on `indexer-hash-tree.h' and
	  `chop_hash_tree_indexer_t'.
	* utils/chop-archiver.c:  Likewise.
	* guile/:  Added specifications and support code for choppers and
	  indexers.  Finished the `store' specifications.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-23

2005-03-25  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Augmented the Guile bindings.
	* guile/hash-support.c:  New file.
	* guile/core-spec.scm:  Added (writable) input buffers as SRFI-4 vectors.
	* guile/streams-spec.scm:  Almost completed.
	* guile/hash-spec.scm:  Completed.
	* guile/stores-spec.scm:  Some work left.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-22

2005-03-23  Ludovic Court`es  <ludovic.courtes@laas.fr>

	More Guile and G-Wrap work on input buffers as SRFI-4 u8vectors.
	* guile/core-spec.scm:  Finished specifying `<chop-input-buffer-type>' and
	  `<chop-writable-input-buffer-type>' using Guile 1.7's SRFI-4 u8vectors.
	* guile/store-ctors-dtors.c:  New file.
	* guile/stores-spec.scm:  New file.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-21

2005-03-22  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Added a filtered block store implementation.
	* src/store-filtered.c:  New file.
	* include/chop/filters.h (chop_filtered_block_store_class):  New declaration.
	  (chop_filter_set_input_from_buffer):  New function.
	  (chop_filter_finish_input_from_buffer):  New function.
	  (chop_filtered_store_open):  New function.
	  (chop_filter_push):  Added a new `pushed' argument.
	* src/filters.c:  Implement these new functions.
	* src/filter-zlib-zip.c (ZIP_RESET_PROCESSING):  New macro.
	* src/filter-zlib-unzip.c (ZIP_RESET_PROCESSING):  New macro.
	* src/filter-zip-push-pull.c (ZIP_PUSH_METHOD):  Play with the new `pushed'
	  argument.
	  (ZIP_PULL_METHOD):  Use the new macro `ZIP_RESET_PROCESSING'.
	* test/interfaces/filters.c (handle_input_fault):  Pass a new argument to
	  `chop_filter_push ()'.
	* test/features/filter-zlib.c (handle_random_input_fault):  Likewise.
	  (handle_zipped_input_fault):  Likewise.
	  (main):  Made `output' larger than `SIZE_OF_INPUT' in order to get a
	  behavior closer to real-life.
	* src/indexer-hash-tree.c (hash_index_handle_serialize):  Add a trailing
	  zero to the buffer returned when in ASCII mode.
	* src/chop-archiver.c (main):  Use a zlib-filtered store if `-z' or `--zip'
	  is passed.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-20

2005-03-21  Ludovic Court`es  <ludovic.courtes@laas.fr>

	More zlib zip/unzip work.  Seems to be in a working state now.
	* src/chop-errors.et (CHOP_FILTER_ERROR):  New error.
	* src/filter-zip-push-pull.c:  Fixed a number of things.
	* src/filter-zlib-zip.c:  Define `ZIP_CANT_PRODUCE_MORE' and
	  `ZIP_INPUT_CORRUPTED'.
	* src/filter-zlib-unzip.c:  Likewise.
	* tests/features/filter-zlib.c:  Commented and refined.
	* tests/interfaces/filters.c:  Likewise.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-19

	Improved `chop-archiver'.
	* utils/chop-archiver.c:  Use `argp' for argument parsing.  Added user
	  documentation.  Fixed a few bugs in the archiving code.
	* configure.ac:  Look for `argp.h'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-18

2005-03-18  Ludovic Court`es  <ludovic.courtes@laas.fr>

	More zlib work.
	* src/filters.c:  New file.
	* src/filter-zlib.c:  Renamed to `filter-zlib-zip.c'.
	* src/filter-zlib-unzip.c:  New file.
	* src/filter-zip-push-pull.c:  New file.
	* tests/features/filter-zlib.c:  New file.
	* include/chop/serializable.h:  Added ctor/dtor accessors.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-17

2005-03-17  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented a zlib-based zip filter; added G-Wrap stuff.
	* src/filter-zlib.c:  New file.
	* include/chop/filters.h:  Polished things a bit.
	* test/interfaces/filters.c:  New file.
	* utils/*.c:  Added calls to `chop_init ()' and/or verification of its
	  returned error code.
	* guile/core-spec.scm:  New file.
	* guile/hash-spec.scm:  New file.
	* configure.ac:  Look for `libz' and `zlib.h'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-16

2005-03-11  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Started writing Guile bindings using G-Wrap.
	* configure.ac:  Added Guile and G-Wrap-related tests.  Added more
	  `AC_CHECK_LIB's.
	* Makefile.am:  Add `guile' to `SUBDIRS' if `HAVE_GUILE' is defined.
	* guile/:  New directory.  Nothing usable yet.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-15

2005-03-08  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Added the remote store client.
	* rpc/block_rstore.x:  New file.
	* src/store-remote.c:  New file.
	* src/Makefile.am:  Produce client-side RPC stubs.
	* include/chop/stores.h:  Added the remote block store class and constructor.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-14

2005-03-07  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Some more work with the anchor-based chopper.
	* include/chop/serializable.h (chop_class_alloca_instance):  Cast the result
	  into a `char *' to avoid pointer type warnings.
	* include/chop/hash.h (chop_hash_name):  Renamed to `chop_hash_method_name'.
	  (chop_hash_gcrypt_name):  Likewise.
	  (chop_hash_lookup):  Likewise.
	  (chop_hash_buffer):  New function.
	* src/hash.c:  Same as above.  Use an O(1) lookup for methods.
	* utils/chop-show-similarities.c:  New file.
	* utils/Makefile.am:  Added `chop-show-similarities'.
	* src/chopper-anchor-based.c (chop_anchor_chopper_read_block):  Return blocks
	  up to the end of the current sliding window.
	* src/find-anchors.scm:  Likewise.


	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-13

2005-03-04  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed (most of?) the anchor-based chopper's bugs.
	* include/chop/choppers.h (chop_chopper_close):  New method.
	  (chop_chopper_t):  New `close' field.
	* src/find-anchors.scm:  Fixed a few bugs compared to the paper.
	* src/chopper-anchor-based.c (chop_anchor_chopper_close):  New function.
	  (chop_anchor_based_chopper_init):  Implement `close'.
	  (chop_anchor_based_chopper_t):  Added a `sliding_window' field; removed
	  the `cached_window*' fields.
	  (chop_anchor_chopper_read_block):  Brought in sync with `find-anchors.scm'
	  and with the paper.  Use a global sliding window.
	* src/chopper-fixed-size.c (chop_fixed_size_chopper_init):  Set
	  `close' to NULL;  call `chop_object_initialize ()'.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-12

2005-02-24  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented an anchor-based stream chopper  la Udi Manber.
	* src/chopper-anchor-based.c, src/find-anchors.scm: New files.
	* include/chop/choppers.h (chop_chopper_t):  Use the run-time class mechanism.
	  (chop_anchor_based_chopper_init):  New function declaration.
	  (chop_anchor_based_chopper_class):  New variable declaration.
	* src/chopper-fixed-size.c:  Implement CHOP_CHOPPER_CLASS and
	  CHOP_FIXED_SIZE_CHOPPER_CLASS.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-11

2005-02-21  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Fixed the hash tree indexer; added debugging message loggers.
	* src/logs.c, include/chop/logs.h:  New files.
	* src/indexer-hash-tree.c (chop_block_tree_flush):  Add the key of the
	  newly flushed block to its parent.  This fixes a bug where only part of a
	  stream was actually indexed.
	  (chop_hash_tree_indexer_t):  Added a `log' field.  Use that log for
	  debug messages rather than `fprintf'.
	  (chop_hash_tree_indexer_log):  New function.
	* src/store-dummy.c (chop_dummy_block_store_t):  Added a `log' field.
	  Use that log rather than `fprintf'.
	  (chop_dummy_block_store_log):  New function.
	* src/Makefile.am (CPPFLAGS):  Added `_GNU_SOURCE' (for `vasprintf').
	* utils/chop-archiver.c:  Use the indexer's message logger.
	* configure.ac:  Look for `vasprintf' (GNU libc).

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-10

2005-02-10  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Completed the hash tree indexer and the GDBM store.
	* include/chop/streams.h:  Have `chop_stream_t' inherit from
	  `chop_object_t'.
	* src/indexer-hash-tree.c (hash_index_handle_serialize):  In ASCII,
	  output the hash method name followed by a colon.
	  (chop_hash_tree_fetch_stream):  Implemented.
	  (chop_hash_tree_stream_t):  New class.
	* src/store-dummy.c (chop_dummy_proxy_block_store_open):  New
	  function.
	* src/store-gdbm.c:  Implementation complete.
	* src/chopper-fixed-size.c (chop_fixed_size_chopper_init):  Added a
	  PAD_BLOCKS argument.
	* src/buffers.c (chop_buffer_grow):  Fixed a bug for zero-sized buffers.
	* utils/gdbm-list-entries.c:  New file.
	* utils/chop-archiver.c:  New file.
	* utils/chop-file.c:  Use `chop_class_alloca_instance ()' instead of
	  automatic variables.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-9

2005-02-08  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented the creation of block hash key trees.
	* include/chop/indexers.h (chop_indexer_index_blocks):  Added a
	  `metadatastore' argument.
	  (chop_indexer_fetch_stream):  Likewise.
	  include/chop/indexer-hash-tree.h:  Added a `keys_per_block' argument to
	  `chop_hash_tree_indexer_open ()'.

	* src/indexer-hash-tree.c:  Implemented block key trees.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-8

2005-02-05  Ludovic Court`es  <ludo@chbouib.org>

	Tiny bug fix in `chop_buffer_to_hex_string ()'.
	* src/chop.c (chop_buffer_to_hex_string):  Use `unsigned char *' instead of
	  `char *'.  This fixes a bug on IA32 not present on PPC32.


	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-7

2005-02-03  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Various fixes; started implementing index handles.
	* stream-file.c (chop_file_stream_read):  Copy the data from FILE located
	  at FILE->POSITION instead of the data at offset zero.
	* configure.ac:  Look for "obstack.h".
	* src/indexer-hash-tree.c:  Use an obstack when allocating block keys.
	  Implemented the serialization of `chop_hash_index_handle_t' objects.
	* src/chopper-fixed-size.c:  Added forgotten file.
	* src/Makefile.am:  Fixed the multi-target rule for chop-errors.[ch].


	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-6

2005-02-02  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Towards a complete interface: added `indexers' and `index handles'.
	* include/chop/indexers.h:  Augmented the interface definition.
	* src/store-hash-tree.c:  Renamed to `indexer-hash-tree.c'.
	* include/chop/store-hash-tree.h:  Renamed to `indexer-hash-tree.h'.
	* src/hash.c, include/chop/hash.h:  New files.
	* include/chop/serializable.h:  New file.
	* src/store-dummy.c:  New file.
	* src/buffers.c (chop_buffer_push):  Set BUFFER->SIZE.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-5

2005-01-28  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Minor changes.
	* include/chop/indexers.h:  New file.
	* configure.ac:  Fixed a few things.
	* src/Makefile.am:  Move "chop-errors.h" to "include/chop".

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-4

2005-01-26  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Implemented a hash tree store;  things compile and run!
	* include/chop:  New directory.
	* src/*.h:  Moved to include/chop.
	* store-hash-tree.c, buffers.c, buffers.h, store-hash-tree.h:  New files.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-3

2005-01-24  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Some more meat.
	* filters.h:  New file.
	* choppers.h:  New file.
	* store-gdbm.c:  New file.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-2

	Augmented `stream-file.c'.
	* stream-file.c:  Added new functions.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--patch-1

2005-01-21  Ludovic Court`es  <ludovic.courtes@laas.fr>

	Initial import of libchop.
	Initial import of libchop.

	git-archimport-id: lcourtes@laas.fr--2004-mosaic/libchop--main--0.1--base-0
