 WB-tree File Based Associative String Data Base System.
 Copyright (c) 1991, 1992, 1993 Holland Mark Martin

Permission to use, copy, modify, and distribute this software and its
documentation for educational, research, and non-profit purposes and
without fee is hereby granted, provided that the above copyright
notice appear in all copies and that both that copyright notice and
this permission notice appear in supporting documentation, and that
the name of Holland Mark Martin not be used in advertising or
publicity pertaining to distribution of the software without specific,
written prior consent in each case.  Permission to incorporate this
software into commercial products can be obtained from Jonathan
Finger, Holland Mark Martin, 174 Middlesex Turnpike, Burlington, MA,
01803-4467, USA.  Holland Mark Martin makes no representations about
the suitability or correctness of this software for any purpose.  It
is provided "as is" without express or implied warranty.  Holland Mark
Martin is under no obligation to provide any services, by way of
maintenance, update, or otherwise.

WB's Authors are Aubrey Jaffer, Jonathan Finger, and Roland Zito-Wolf.
Please send bug-reports and enhancements to jaffer@ai.mit.edu

			       MANIFEST

  `README' is this file.  It contains the COPYRIGHT NOTICE, MANIFEST,
	and INSTALLATION INSTRUCTIONS.

  `dbscm.doc' documents the SCM interface to WB-tree.
  `ChangeLog' documents changes to the WB.
  `Design.doc' describes the internal representations and algorithms.
  `example.scm' example program using WB-tree in SCM.

  `defs.scm' SCM configuration code which gets compiled into defs.h.
  `handle.scm blink.scm prev.scm del.scm ent.scm scan.scm stats.scm'
	SCM code for WB-trees which is compiled into C code with
	suffixes ".c" and ".h".
  `blkio.scm' wimpy POSIX interface to the disk.  Replace this if you
	have a more direct interfact to the disk.
  `sys.h sys.c' System dependencies.
  `sys.scm' System dependencies when debugging in SCM.
  `db.c' C code for the SCM interface to WB-trees.
  `db.scm' code for SCM interface when debugging in SCM.
  `comp.scm' SCM code which compiles SCM code into C.
  `test.scm' file for testing WB-tree system.
  `test2.scm' more tests for WB-tree system.
  `Makefile' Unix makefile
  `VMSBUILD.COM' command script for compiling under VMS.
  `make.scm' SCM program for translating and compiling WB-tree system.
  `all.scm' loads all the SCM files for debugging.

  `view.c' program for viewing database files.
  `check.c' program for checking, repairing, and garbage collecting
	WB-tree databases.

		      INSTALLATION INSTRUCTIONS

This first distribution of WB-tree requires the SCM and SLIB packages.

SCM can be obtained via FTP from:
altdorf.ai.mit.edu:archive/scm/scm4c0.tar.z
prep.ai.mit.edu:pub/gnu/jacal/scm4c0.tar.z
nexus.yorku.ca:pub/scheme/new/scm4c0.tar.z

SLIB is a portable Scheme library which SCM uses:
altdorf.ai.mit.edu:archive/scm/slib1d2.tar.z
prep.ai.mit.edu:pub/gnu/jacal/slib1d2.tar.z
nexus.yorku.ca:pub/scheme/new/slib1d2.tar.z

Once you have installed these packages, do "scm all" in this
directory.  This will load the Scheme version of WB-tree with test
code.  Typing `(main)' will construct a test database "z" in this
directory.  If this runs without errors then you are ready to build
the C code.  Exit from scm with `(quit)'.

If you are running on a unix system, `make' in this directory should
construct the programs dbscm, check, and view.  If your C compiler
can accept ANSI function prototypes, (define __STDC__ #t) in comp.scm.

On VMS systems, @VMSBUILD should construct the same programs.  On Unix
and VMS systems the directories scm and wb should be in the same
directory.

On other systems, run "scm" and type (load "make").  This will
translate all the appropriate SCM files and then do a system call to
"make".  You will need to configure your makefile for your system.
If your C compiler cannot accept ANSI function prototypes, comment out
the line (set! __STDC__ #t) in make.scm.

Now run "dbscm test" and type (main).  This should build the test
database "z" much more quickly than before.

Type (quit) to exit from DBSCM.  Now run "check z".  This will check
the structure of the database and collect temporary files.  This
should reclaim 52 blocks and report no errors.  If you run it again,
no blocks will be collected.

The program view will allow you to see the blocks of key-value pairs
in the B-tree.  Run "view z".  Block 0 will be displayed.  To see any
other block, type its number and <Return>.  To exit, type <Return>.
