
                       INSTALLING TINYFUGUE

Installing TinyFugue is quite easy on most systems:  simply type
"Build" in the directory you unpacked.  The Build script will
attempt to figure out everything it needs to know about your system
and install all files in their proper location.  The rest of this
file describes what to do when Build guesses incorrectly, or you
want to change some of the default installation options.

Build has two other options you may use after you have installed tf:

 Build uninstall   Remove tf, Connector, help file & index, and library.
 Build clean       Remove object files and other junk from source directory.


System types
------------

If Build fails because it guessed incorrectly about your system, you
may need to edit LIBS, FLAGS, or some other lines in the Config file.

Some possible system related definitions:

  TTYDRIVER='-DUSE_TERMIO'      Use <termio.h> instead of <sgtty.h>.
  TTYDRIVER='-DUSE_SGTTY'       Use <sgtty.h> instead of <termio.h>.
  FLAGS='-U__STDC__'            Your system is Apollo Domain/OS.
  FLAGS='-DWINS'                Your system is SysV with WINS.
  LIBS='-lnet -lnsl_s'          Your system is SysV with WINS.
  LIBS='-lsocket -linet -lnsl'  Your system is dynix/ptx.
  RANDOM='-DRANDOM=random'      Your system has random() but Build couldn't
                                find it.


File Locations
--------------

If you do not explicitly define the file locations, TF will try to
install them in these places:  /usr/local/bin and /usr/local/lib,
if you have write permission;  $HOME/bin and $HOME/lib, if they
exist; $HOME otherwise.  The man page is not installed by default.
To change the location of a file, define the appropriate variable
in Config with a full path name.

IMPORTANT:  If you move or change the name of the macro library or
helpfile after installing, you must edit the TFLIBRARY or HELPFILE
line in Config, and run Build again.

TF assumes your system keeps incoming mail in a central spool
directory.  If your system keeps it in the recipient's home directory
instead, find the section near the top of tf.library that describes
this, and follow the instructions there.  Build will still complain
that it can't find your mail directory; you can ignore it.


Public Installation
-------------------

If you have write permission in /usr/local/bin and /usr/local/lib,
TinyFugue will be installed there.  You can change the locations
by editing Config as described above.  Running Build will then put
all files in their proper location with the proper permissions.

Some features of TF can be disabled for secure public installation, by
uncommenting one or more of these RESTRICT lines in Config:

    RESTRICT_SHELL   Prevents all access to shell or external commands.
                     Disables TF builtins "/sh" and "/quote !", and
                     uncompression during /load and /help.

    RESTRICT_FILE    Prevents reading and writing of files.  Disables
                     TF builtins "/load", "/save", "/saveworld", "/log",
                     and "/quote '", and sockmload feature.  ("/load"
                     is still allowed when reading initialization files.)

    RESTRICT_WORLD   Disallows all connections except those defined in
                     the library file.  TF builtins /addworld and the
                     "/world <host> <port>" semantics are disabled after
                     the library is read at startup.


Modifications
-------------

If you make any modifications to the source (other than the Makefile),
please add your name or other identification to the version[] variable
in main.c (primarily to avoid confusion).  I ask that any redistributions
give proper credit to the orginal author(s), and tell where to find the
original source.


Terminal Handling
-----------------

Build will compile tf with the termcap library by default.  If your
termcap library is buggy, you have two alternatives:

1. Set TERMINAL="" in the Config file.
   This will disable all but very basic screen functions.  Visual
   mode will not be available.

2. Set TERMINAL="-DHARDCODE" in the Config file.
   TF will emulate a 25x80 VT-100 or ANSI terminal.  I recommend
   that you check the attributes_on() and attributes_off() functions
   inside the HARDCODE code block of termcap functions to make sure
   they do what you want for your particular terminal emulation.

If you are not using a VT-100 or ANSI terminal, you can still use
-DHARDCODE if you edit the terminal control sequences in output.c.
Two things to note:  If your terminal type uses (0,0) as the upper
left corner, decrement the x and y arguments in the sprintf() call
in xy();  and, if your terminal can not set the scroll area, in the
HARDCODE code block in init_term() set have_scroll=0 instead of 1.


Nonblocking Connections
-----------------------

On some systems, TF can be compiled to perform nonblocking connections
to worlds.  That is, if a new /world command does not complete
right away because of net lag, TF will continue trying in the
background, allowing you to do other things while you wait.  It
does this by running the connect() in a child process.  Nonblocking
connect can be very nice on fast forking systems, but on slower
machines can be annoying.  To install it, you must define TFCONNECT
as the full path of the connection server (/usr/local/bin/tf.connect
is recomended), and in the Config file set CONNECT to one of these
values:

    CONNECT_SVR4       For SVr4 or similar systems which support I_SENDFD
                       and I_RECVFD ioctl() calls (but not SVr3).

    CONNECT_BSD        For 4.3 BSD or later, or similar systems (including
                       SunOS and OSF).   Will not work on 4.2 BSD.


Miscellaneous
-------------

If you want to be able to specify multiple-word arguments using " and '
quotes (for world fields and macro arguments), add -DQUOTED_ARGS to
the FLAGS line.

If you don't want TF to catch coredumps, add -DNO_COREHANDLERS to the
FLAGS line.

If you are short on disk space, you can reduce the executable size by
using "strip tf" after compiling, and you can compress the helpfile if
you set COMPRESS_SUFFIX and COMPRESS_READ in tf.library.


Last Resort
-----------

If you think TF won't compile because of a bug or incompatibility with your
system, you can email the author at hawkeye@glia.biostr.washington.edu.
Please include the address of the system on which you are trying to
compile, and the type of system it is, if you know.  Also include the file
"Build.log", generated by Build.  Don't forget to put a subject line on
the email.

