New nmem utility, nmem_transfer, that transfer blocks from one
[yaz-moved-to-github.git] / README
diff --git a/README b/README
index 3baa3f9..2521a65 100644 (file)
--- a/README
+++ b/README
-Compilation and installation
-
-The primary output of the source here is the libyaz.a library, which
-contain support functions for implementing the server or client role
-of Z39.50/SR. Currently, the library is placed in a directory 'lib'
-which is one level *above* the distribution directory (yaz). This was
-initially done because the library is often used along with several
-other packages, and it was useful to gather the different libraries in
-a common place. If you don't like it, changing the 'LIBDIR' macro in
-the toplevel makefile should be sufficient. Obscurely, the header
-files are located in the include-directory *under* the yaz/ directory.
-
-The toplevel makefile also contains directions on how to enable Peter
-Furniss' XTIMOSI package. The package can be downloaded from
-ftp://pluto.ulcc.ac.uk/ulcc/thinosi/... (or something close to that).
-If you place the xtimosi directory on the same level as the yaz
-directory, and simply follow the directions in the toplevel YAZ
-makefile, the libmosi.a library from xtimosi should link in with no
-problems. The xtimosi library is needed to support a full OSI stack,
-but is *not* required to talk to American-style Z39.50 implementations
-over TCP/IP. Don't worry about compiling the test applications in the
-xtimosi package. Just do a "make libmosi.a", and do whatever is
-required to make the compilation complete on your local ystem.
-
-Two test-programs of interest are generated when you type 'make' at
-the top level. server/ztest and yazlib/cli. Ztest is a dummy database
+
+ * Copyright (C) 1995-1998, Index Data.
+ * See the file LICENSE for details.
+ * Sebastian Hammer, Adam Dickmeiss
+
+Compilation and installation for YAZ 
+  $Id: README,v 1.23 1998-09-22 09:41:21 adam Exp $
+
+The primary output of the source here is the lib/libyaz.a library,
+which contains support functions for implementing the server or client
+role of Z39.50/SR.
+
+Windows programmers: refer to the file windows.txt which describes
+how to compile the software using Microsoft Visual C++.
+
+On Unix, GNU configure is used to configure YAZ and generate Makefiles.
+Type "./configure", then "make" to build YAZ.
+
+Two test-programs of interest are generated when you type 'make' at the
+top level: ztest/ztest and client/client. Ztest is a dummy database
 server which returns canned responses to all queries. It's good for
 verifying that the protocol works ok, and ztest.c shows a minimalistic
 implementation of the 'backend' interface.
 
-Cli is a linemode Z39.50 client. It supports a fair amount of the
-functionality of Z39.50v2/SR, but some things you need to enable by
-recompilation. Its primary purpose is to excersise the package, and
-verify that the protocol works OK. It can be started by typing
+Client is a linemode Z39.50 client. It supports a fair amount of the
+functionality of Z39.50v2/SR, but some things you need to enable or
+disable by recompilation. Its primary purpose is to excersise the
+package, and verify that the protocol works OK. It can be started
+by typing
 
-cli tcp:<hostname>:<port>
+client tcp:<hostname>:<port>
 
 at the UNIX prompt, to connect to a Z39.50 server, or
 
-cli osi:[<tsel>'/']<hostname>:<port>
+client osi:[<tsel>'/']<hostname>:<port>
+
+to connect to an OSI SR target (this requires mOSI-support). To connect
+to the DANBIB test target, you might use:
+
+client osi:0103/find2.denet.dk:4500
+
+Use '?' to get a list of the available commands.
+
+The current query language for the find command is a bit awkward, but
+functional:
+
+query     ::= ['@attrset' <attribute-set>] rpn
+rpn       ::= complex | simple | attr rpn
+complex   ::= operator rpn rpn
+operator  ::= '@and' | '@or' | '@not' | '@prox' proximity
+simple    ::= term | set.
+term      ::= <word> | '"' <term> ... '"'.
+set       ::= '@set' <setname>.
+attr      ::= '@attr' [<attribute-set>] <number> '=' <number>.
+proximity ::= exclusion distance ordered relation which unit
+exclusion ::= '1' | '0' | 'void'
+distance  ::= <number>
+ordered   ::= '1' | '0'
+relation  ::= <number>
+which     ::= 'known' | 'private'
+unit      ::= <number>
+
+Eg.:
 
-to connect to an OSI SR target (this requires XTIMOSI). To connect to
-the DANBIB test target, you might use:
+Andersen
 
-cli osi:0103/find2.denet.dk:4500
+"Hans Andersen"
 
-CLI supports CCL-queries, with the mapping between qualifiers and
-attribute values specified in the file default.bib in the working
-directory.
+@and @attr 1=1 andersen @attr 1=4 @attr 4=2 duckling
+
+@attrset Bib-1 @and @attr GILS 2=2008 Washington @attr 1=21 weather
+
+The sort command takes a sequence of sort specifications. A sort
+specification holds a field (sort criteria) and is followed by flags.
+If the sort critieria includes = it is assumed that the sort SortKey
+is of type sortAttributes using Bib-1. The integer before the = is
+the attribute type and the integer following the = is the attribute
+value. If no = is in the SortKey it is treated as a sortfield-type
+of type InternationalString. Flags observed are s (sort case
+sensitive), i (sort case insensitive), < (ascending), > (descending).
+Eg.:
+   1=4   i<                  (use is title, insensitive, ascending).
+   Title s>                  (String Title, sensitive, descending).
 
 The directories:
 
+doc     - Documentation.
+
 util    - Various little utility functions. Logging, memory debugging,
-       primitive ISO2709 presentation for the client, etc.
+       primitive ISO 2709 presentation for the client, etc.
 
 odr     - Open Data Representation. This module implements the BER
-       encoding rules. Documentation is found in the files odr.man
+       encoding rules. Documentation is found in the files odr-use.man
        and odr.txt.
 
 asn     - This module implements the Z39.50/SR protocol. The best way
        to find out how it works is to look in the sample
-       client/server code in server/seshigh.c or yazlib/tst.c.
+       client/server code in server/seshigh.c or yazlib/tst.c. The
+       interface is still wholly described by the file proto.h
+       which defines structure and type definitions for each of the
+       types introduced in the protocol specification.
 
-yazlib  - This module primarily implements the transport transparency
+comstack- This module implements the transport transparency
        stack (COMSTACK). The comstack implements a generic interface
        for exchanging BER-encoded records over a network. It supports
-       the American mode of exchanging the records straight over
-       TCP/IP, and Peter Furniss' XTIMOSI package over RFC1006. Look
-       for documentation in the file comstack.man.
+       the 'American' mode of exchanging the records straight over
+       TCP/IP, and uses Peter Furniss' XTIMOSI package over RFC1006.
+       Look for documentation in the file comstack.man.
+
+rfc1006 - Xtimosi requires an implementation of the OSI transport
+       layer with an XTI-based API. Some systems (HP and DEC,
+       notably) provide this. For others, we provide an
+       implementation of the RFC1006 protocol (which is what
+       ISODE-based implementations often use). This module is not
+       neeeded if you don't use xtimosi, and it's not included in the
+       libyaz.a library.
 
 server  - This is the implementation of the server frontend. It
-       It provides event-handling and server managament functions,
+       provides event-handling and server managament functions,
        and calls the backend primitives (best documentation of these
        is in the file include/backend.h).
 
-rfc1006 - Xtimosi requires an implementation of the OSI transport
-       with an XTI-based API. Some systems (HP and DEC, notably)
-       provide this. For others, we provide an implementation of the
-       RFC1006 protocol (which is what ISODE-based implementations
-       typically use). This module is not neeeded if you don't use
-       xtimosi.
+client  - A demonstration client. If we come upon a good design for a
+       higher level client API, that will live here.
+
+ztest   - A demonstration server that implements a backend.
+
+include - The various header files.
 
 makelib - This is a simple utility that gathers the libraries from the
        previous modules into libyaz.a.
 
-include - The various header files.
+lib     - The libraries. Primarily libyaz.a.
+
+To get more information or assistance, send mail to yaz-help@indexdata.dk.
+
+We maintain a mailing-list for the purpose of announcing new versions of
+the software, bug-reports, discussion etc. You can sign up by sending
+mail to yaz-request@indexdata.dk and include the following command
+command in your email:
+    subscribe yaz-l
 
-../lib  - The libraries. Primarily libyaz.a.