This is tdbm, a dbm-like library with nested atomic transactions. The library is described in a paper appearing in the USENIX Proceedings, Summer '92. The distribution includes the following files: README This file. TODO Stuff I haven't got time to do. Makefile.nothreads A makefile for a non-threaded environment. I do not plan to distribute the Threads lightweight process kernel. If you want to rename this "Makefile" you'll want to edit the "depend" rule. You'll need perl if you do a "make depend". If you don't do a "make depend" you may have to delete the existing automatically generated dependencies. makefix A perl script to diddle the output of 'make depend'. Source for the library abort.c alloc.c begin.c cache.c close.c commit.c delete.c entry.c error.c fetch.c find.c first.c lib.c next.c open.c page.c precommit.c recover.c store.c trans.c These files are compiled to make libtdbm.a. Source for a database inspector program tdbm.c complete.c Sorry, but there's no documentation for this program. Type '?' for help. It's pretty much a direct mapping of interactive commands to tdbm functions. The file complete.c implements word completion. It is used by tdbm.c and may be useful in other applications, so I've included a man page for it. Manual pages tdbm.3 complete.3 usenix/{man,paper}.ps The USENIX paper. Please check the Makefile before proceeding. The code can be compiled as ANSI C (use -D__USE_ANSI_C_ in CFLAGS) or old K&R C. You should not need to change any #defines in any .h file. Do: make tdbm to create the library and the test program. The code has been tested on: o Sun 4 (4.1.1) using gcc. o MIPS using cc -systype bsd43 It will compile but not link on the hp700 because of several undefined library functions (realpath(), regex(3)). If you come across any bugs, have any suggestions, or make any changes you'd like to share please send mail to me rather than posting to the net. In fact, if you decide to use tdbm I'd be interested in receiving a brief message from you so that I have some idea of how many sites are using it and for what purposes. ----- Barry Brachman Distributed Systems Software, Inc. brachman@dss.ca http://www.dss.ca