===========================================================================
 NATALI README, 25 April 1996.
===========================================================================

An AppleTalk Library Interface compatibility library for Netatalk
Version 1.10
ftp::/ppr-dist.trincoll.edu/pub/ppr/natali-1.10.tar.gz

Copyright 1995, 1996, Trinity College Computing Center
Written by David Chappell

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided
that the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.  This software and documentation are provided "as is" without
express or implied warranty.

===========================================================================
 Description
===========================================================================

This library is a partial implementation of the AT&T/Apple AppleTalk
Library Interface.  The ALI was designed as the standard AppleTalk API
for Unix System V Release 4.

This library is designed for use with Netatalk, a Unix AppleTalk
implementation from the University of Michigan.  The example PAP code
contained in Netatalk was an invaluable aid in writing this library.
(Dispite this fact this code does not suffer from certain problems which
afflict the Netatalk code, such as the appearent failure of HP 3Si's
to respond with EOJ on any but very short jobs and occasional stalling during 
long jobs on other printers.  In this version of NATALI, there are special
workarounds for deficiencies in the Netatalk ATP library which cause this to
happen.)

Most of the NBP functions and all of the PAP functions are implemented. 
Unfortunately, the implementation is not quite correct.  This is because in
current versions of Netatalk, ATP is not yet in the kernel.  Because this is
so, it is necessary that a PAP function such as pap_write(), pap_read(), or
pap_sync() be called at least every 5 seconds.  If this is not done, request
retransmissions and tickles could be delayed.  If this occurs, some printers
and clients are likely to become upset.  This will probably be corrected as
soon as Netatalk has kernel ATP which supports multiple outstanding
requests.

This library was written specifically for use with PPR, a PostScript print
spooler which I wrote.  In PPR, code which is designed to get around the
limitations of this library is compiled in when the symbol _NATALI_PAP is
defined.

This library was written on a Linux system.  It can probably be easily
ported to the other systems on which Netatalk runs, but I have not attempted
to do so.  I do not have access to these systems, but if someone sends me
patches, I will include them in a future release.

==========================================================================
 Installation Instructions
==========================================================================

Programs built with this library will not link properly unless one small
change is made to Netatalk.  This is in the file libatalk/atp/atp.rsel.c.
Change the part at line 414 that reads:

static int
resend_request( ah )
    
to

int
resend_request( ah )

This change allows NATALI to call this internal function.  After making this
change, go to the top level of the Netatalk source tree and run "make
install".

To build this library, run "make" and "make install" as root.  The library will
be installed as "/usr/local/lib/libnatali.a" and the include files will be
installed in "/usr/local/include/at".

On some Linux systems it may be necessary to comment out the line

#include <sys/uio.h>

in natali.h in order to avoid a fatal error due to a duplicate structure
definition.

==========================================================================
 End of NATALI README
==========================================================================
