README for the "fs" interface example.

[ Copyright (c) 1991, 1992, 1993 Xerox Corporation.  All Rights Reserved.  

  Unlimited use, reproduction, and distribution of this software is
  permitted.  Any copy of this software must include both the above
  copyright notice of Xerox Corporation and this paragraph.  Any
  distribution of this software must comply with all applicable United
  States export control laws.  This software is made available AS IS,
  and XEROX CORPORATION DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED,
  INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY
  AND FITNESS FOR A PARTICULAR PURPOSE, AND NOTWITHSTANDING ANY OTHER
  PROVISION CONTAINED HEREIN, ANY LIABILITY FOR DAMAGES RESULTING FROM
  THE SOFTWARE OR ITS USE IS EXPRESSLY DISCLAIMED, WHETHER ARISING IN
  CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, EVEN IF
  XEROX CORPORATION IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. ]

"fs" is an example of a service written in CommonLisp.  It implements
a file server protocol, where clients contact the file server with
filenames, and receive file objects in return.  Methods defined on the
file objects allow the users to manipulate the files.

Before using any ILU tools or programs, make sure you have the appropriate
environment variables defined.  These are typically ILUHOME, ILUPATH, and
ILUREGISTRY.  See the section on environment variables in the Installation
chapter of the ILU Manual for details.

In the example listings below, we use the string `ILUHOME' to stand for
the actual name of the directory in which ILU has been installed on your
system.  Using the actual string `ILUHOME', as shown in the examples, 
*will not work on your system*.  Use the name of the directory in which
ILU has been installed.

To create the lisp bindings for the interface, use the
lisp-stubber command:

  % mkdir /tmp/test
  % cd /tmp/test
  % cp ILUHOME/examples/fs/* .
  % sunrpc-register-interface fs.isl
  % lisp-stubber fs.isl
  basics file for interface fs to ./fs-basics.lisp...
  class records for interface fs to ./fs-class-records.c...
  server stubs for interface fs to ./fs-server-procs.lisp...
  sysdcl for interface fs to ./fs-sysdcl.lisp...
  %

To load up and start the file server:

  % franz
  USER(1): (load "ILUHOME/lisp/pdefsys")
  USER(2): (load "ILUHOME/lisp/ilu-sysdcl")
  USER(3): (pdefsys:load-system :ilu)
  USER(4): (pdefsys:load-system :ilu-server)
  USER(5): (load "fs-sysdcl")
  USER(6): (pdefsys:compile-system :fs)
  USER(7): (pdefsys:load-system :fs)
  USER(8): (pdefsys:compile-system :fs-server)
  USER(9): (pdefsys:load-system :fs-server)
  USER(10): (load "impl-fs")
  USER(11): (setq s (impl-fs:start-server))
  #<IMPL-FS:SERVER-IMPL @ #x959fb6>
  USER(12): (ilu:string-binding-handle s)
  "2@123.456.98ad209.890@sunrpc_2_0x31000a20_1|tcp_127.0.0.1_1943"
  USER(13):

To test the file server:

  % franz
  USER(1): (load "ILUHOME/lisp/pdefsys")
  USER(2): (load "ILUHOME/lisp/ilu-sysdcl")
  USER(3): (pdefsys:load-system :ilu)
  USER(4): (load "fs-sysdcl")
  USER(5): (pdefsys:load-system :fs)
  ;; Note:  use the actual SBH returned in the above example in the
  ;;  next call, *NOT* this example one:
  USER(6): (setf s (ilu:sbh->instance 'fs:server
    "2@123.456.98ad209.890@sunrpc_2_0x31000a20_1|tcp_127.0.0.1_1943"))
  USER(7): (setf f (fs:find-file s "/tmp/test/"))
  #<FS:DIRECTORY 0x239a08>
  USER(8):
