Subject: libfaces, a faces library

From: [email-masked] (Rob Kooper)
Date: Mon, 20 Mar 95 21:35:44 GMT

Hi,

This is to announce version 1.1 of libfaces. Libfaces is a library
that implements the idea of faces, and uses a database instead of
directory structure to store all the faces. It also knows about the
mailcap and MIME types, so the database can hold any kind of data.

You can find libfaces at
	ftp.cc.gatech.edu:/pub/people/kooper/faces
and	ftp.cs.indiana.edu:/pub/faces/libfaces

The source is in libfaces-1.1.tar.gz and there are also binaries for
both the SUN, compiled under 4.1.1, and the SGI's, compiled under 5.2.

The databases that are used are different from the databases that were
used in other programs and are distributed in the picons. You can
however easily convert from picons to libfaces, using the facesdb
program that comes with libfaces. To convert a directorystructure into
the libfaces format all you need to say is "facesdb -convert <dirname>"

If you want to compile it you need to have gdbm installed. I used
gdbm-1.73, I don't know if other version work as well. I know already
one reason why it might not compile, the program uses strchr, which is
not available on BSD platforms, I think. Let me know if there are
other problems.

Let me know what you think of this, even if you want to say that it is
bad.

Rob
-- 
Rob Kooper
[email-masked]
http://www.twi.tudelft.nl/~kooper/

README of libfaces-1.1
-------------------------------------------------------------------------------
This is the faces library version 1.1

Copyright (C) 1995 Rob Kooper ([email-masked])

libfaces is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

libfaces is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with libfaces; see the file COPYING.  If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.

You may contact the author by:
   e-mail:  [email-masked]

Thanks to Steven Kinzler for help deciding on the database format.

-------------------------------------------------------------------------------
SHORT DESCRIPTION OF LIBFACES:
==============================

Currently the faces used in the different faces programs out on the
web use a directory structure to keep the faces. Searching through
directory structure takes time. Other disadvantage, at least to me, was
the multitude of files lying around.

To solve these problems I started experimenting with dbm, ndbm and
gdbm. These can hold all the faces in a databases. dbm and ndbm
couldn't be used because they have a limit on the number of bytes that
are associated with a key. gdbm doesn't have this limit.

When I started writing the code, I was planning to make a new faces
program to monitor my mail, then I decided to create a library that
could be easily used in other programs.

-------------------------------------------------------------------------------
CONFIGURATION and INSTALLATION:
===============================

To compile libfaces you need to have the gdbm library, you can't use
dbm or ndbm, see the previous section. I used gdbm-1.73 which can be
found on any site carrying the gnu software.

Not necessary to compile, but it is nice to have it, is xpm. I used
xpm-3.4e but any other version 3.4 should work. If you don't have xpm
installed be sure to comment out #define USE_XPM in the faces.templ or
comment out the line XPM_INCLUDES in the Makefile.noX

The easiest way to configure is to take a look at the the faces.templ
and change it. Now run xmkmf -a. Now type make and after a while you
should have an program called faces in the faces directory.

If you don't have xmkmf, or it doesn't work, look at the Makefile.noX
and change what needs changing, and type make -f Makefile.noX. It
should now compile all the programs and libraries.

When finished building make install, or make -f Makefile.noX install
will install the program, and libraries in the appropriate places.

-------------------------------------------------------------------------------
FACES DATABASE:
===============

The database used by the faces library is created using gdbm. Gdbm has
the advantage of no limit on the data that is associated with a
key. Both dbm and ndbm can only have 1Kb associated with a key. The
database has the following structure:
	RECORD := LINK | ENTRY+
	LINK   := link:<email address>
	ENTRY  := MIME:LENGTH:DATA
	MIME   := major-type/minor-type
	LENGTH := 0 | <length of DATA>
	DATA   := <path to filename> | <image file>

if the LENGTH is 0 then the DATA is a pointer to a filename. The
filename is terminated with 0.

-------------------------------------------------------------------------------
TODO LIST:
==========

1.  Implement simple perl library.

(Send me email, if you think there is more that should be added.)

-------------------------------------------------------------------------------