===============
            |     BOP     |
            ===============


What is it ?
============

"Bop" stands for "Boite à Outils de Patrick" which means "Patrick Tool Kit",
more precisely "Patrick Tool Box" in french, but to my ears 'Bop' sounds
better than "Ptk" or "Ptb".

It aims to be an object oriented C library to be used by C developpers.

In this version, you will find :

. Bopc : an any-object container class.

. Bopd : Debugging tools.

. Boph : a hash tables class.

. Bopl : a double linked lists class.

. Bopm : memory allocation functions.

. Bops : an extensible stack with extended functions class.

. Bopx : miscellaneous functions.

Legal informations.
===================

All the files in this distribution, unless clearly stated otherwise are
copyrighted :
Copyright (c) 2004 Patrick Davalan. All rights reserved.

Bop is free software, distributed under the terms and conditions of
the GNU General Public License, version 2.  For further informations,
read the file COPYING.

In the directory ./samples, you'll find hash functions from Berkeley DB,
I put them there as examples.
These functions, as Berkeley DB itself, are copyrighted :
Copyright (c) 1996-2004 Sleepycat Software.  All rights reserved.
Copyright (c) 1990, 1993, 1994 Margo Seltzer.  All rights reserved.
Copyright (c) 1990, 1993, 1994 The Regents of the University of California.  All rights reserved.
This is free software too.
You may use these functions under the terms and conditions of the
licenses you can find in file ./samples/LICENSE-DB

Distribution directories structure.
===================================

.                   Installation files, legal files, build directory.
|-- doc             Documentation in html format.
|   `-- examples    Examples programs using Bop.
|-- man             Manual pages.
|   `-- man3        *The* bop man page can be found here.
|-- samples         Samples, for now Berkeley DB hashing functions
|-- src             Library functions sources.
|   `-- tests       Test programs sources.
`-- testsuite       Testsuite scripts.
    |-- files       Files used by testsuite scripts.
    |-- ref         Expected results of testsuite scripts.
    `-- res         Results of testsuite scripts.


How to install ?
================

I tested the installation procedures on a Debian GNU/Linux "Sarge".
It should work on other GNU/Linux systems and maybe on other Unix-like
systems, but I can't certify anything.

You must have a decent C compiler (I suggest GCC, the GNU C compiler),
make, and other utilities probably shipped in your base distribution.

At the shell prompt, from the main directory of the package, type :

./configure
make
make check  # optional but recommended
make install    # you probably need to be root for this
make post-check # optional but recommended

It takes a short time to compile and to check. There would be no
compilation warning if you use the gcc compiler on GNU/Linux. But it
may depend on the compiler version, don't panic !

As an alternative, an interactive shell script, './installme', may be
used to install. It performs the steps above and stops on error.
Its arguments are passed along to ./configure.
As it promts you to hit <enter> from time to time, you have the time to
read informative messages from bop, It also gives more informations than
make, it's the reason why using this verbose script is recommended.
You will be prompted for the root password when this script needs to have
root privileges.

By default, Bop is installed on /usr/local/ , if you want to install
it somewhere else, specify '--prefix=my-install-dir at configure
time, e.g. :
./configure --prefix=$HOME
Or, if you use 'installme"
./installme --prefix=$HOME

There is no other configuration option. You can change compilation options
when running "make", if you use gcc, you'll probably not want to do it.

The installation directory should contains the following directories, but
bop creates them when it can't find them .

./sbin
./include
./lib
./sbin
./man   or ./share/man  # it may depend ...
./share
./share/doc

The directories created by Bop will not be removed at uninstall time.

At least on a GNU/Linux system, in order to be found at program execution,
the libraries directory (except when trusted like /lib or /usr/lib) should be
declared in /etc/ld.so.conf, so check if $(PREFIX)/lib appears in file
/etc/ld.so.conf.

You now have to run /sbin/ldconfig
/sbin/ldconfig

The standard installation does *NOT* install the static library, if you
want to install it, type :
make install-static

More briefly, do as usual.

How to uninstall ?
==================

You have to uninstall with the version you have installed before
installing a newer version. The reason is that some file names will
change in future versions and some will not.
The typical way to do it is to jump into the version distribution
directory you want to uninstall and, without even the shade of any regret,
type :
make uninstall

if you don't want to keep this distribution files after you install, an
uninstall script is created at install time in :
$(PREFIX)/sbin/bop.[version].uninstall with permission 744
Thus, you can safely remove the distribution files, the uninstall script will
be able to uninstall. just type :
/usr/local/sbin/bop.[version].uninstall
(if you installed in /usr/local (the default)).
This uninstall script is *not* removed by the uninstall process nor by the
uninstall script.
You might want to do it by hand, anyway it is very small.

How can I use it ?
==================

You have to follow the term and conditions of the license, Bop comes
with absolutly *NO* warranty, therefore if you think your milk turned
sour because of Bop, I will *NOT* be liable to you for damages.
You have been warned !

There is a man page (bop(3)) which says that Bop doesn't use man pages
for documentation purpose.

You can find documentation in the doc directory, mostly in html.
... Documentation is in french, but it will quite soon be translated
into english, it might already be done at the time you read this file and
the doc placed in a page linked to http://patrick.davalan.free.fr/bop/
You'll have to follow the union jack flag.
a sample script can be used to update your distro doc directory:
./samples/getdoc
fix it first to meet your installation needs.

The documentation is likely *NOT* to be maintained in french afterward.

Doc files are installed in $(PREFIX)/share/doc/bop/

Bop library is created with "soname" 'libbop.2.so'. At link time (at
least if you use gcc to link the programs), you'll have to specify this
soname :
gcc myprogram.o -lbop.2 -o myprogram

If you installed in a non standard directory (e.g your home directory),
you also need to specify the library directory :
gcc myprogram.o -L/$HOME/lib -lbop.2 -o myprogram

If you're reckless enough to try to use such a program, you'll have to
specify the library directory path in variable LD_LIBRARY_PATH if bop is
not installed in a trusted directory.

To use the bop library header files, you have to include bop.2/bop.h
in C program source files :
#include <bop.2/bop.h>

How much does it cost ?
=======================

It's up to you.

I suggests that you take time to send bug reports if you find some,
suggestions are also welcomed. These are the most important things you
can do for me.

If you use bop *intensively* in one of your softwares, please put my
name in your "CREDITS" or "THANKS" file. It's not because I'm proud of
having written it, but sometimes I look for a job and it may be useful
for me to be able to say "I worked on many softwares all around this
world. As an example, I took much pleasure in writing code for the
well-known <your software> blah ...".
Then send me an email to tell me you did it.
(Patrick Davalan) jigmepema <at> wanadoo.fr

Bugs.
=====

If you find one, please tell me.

The installation procedures should have been better, they will be
improved. the same for the test procedures.
I planned to test these procedures on Debian Sid, Testing and Stable
(and maybe other GNU/Linux distributions), on GNU/Hurd and on Open-BSD.
I don't know when but it's likely to be in the future.
(a not so far future, I hope).

English documentation lacks, It's likely that I'll write it on the web
site before next version release. http://patrick.davalan.free.fr/bop/

Bop will stay as a pre-2.1.0 release (i.e. 2.0.9x) until better tests and
documentation had been achieved. You are encouraged to install it, use it
and, when appropriate, send bug reports.

Some performance improvements will also be done in future releases.

The author.
===========

Patrick Davalan. <jigmepema<at>wanadoo.fr>   # s/<at>/@/

The end.
========

Thank you for following me so far despite my poor english.

That's all folks.