                      TinyFugue for UNIX-like systems


Installing TinyFugue

  TinyFugue should work on any Unix-like system that has BSD-style
  select().  This includes almost everything except some old SVr3-like
  systems which either do not have select(), or have a select() that
  works only on STREAMS devices but not terminals.

  Installing TinyFugue is quite easy on most Unix-like systems:  simply
  type "sh unixmake" in the top directory.  The tfconfig script
  will attempt to figure out everything it needs to know about your
  system and install all files in their proper location.  If you have any
  problems, or want to change a default installation option, be sure to
  read the rest of this file, and the unix/Config file.  Changes should be
  made in unix/Config only.


unixmake options:

 install	Compile for default locations and install (this is default).
 local		Compile for /usr/local/*/tf-{version}*, but do not install.
 files		Compile for default locations, but do not install.
 clean		Remove object files and other junk from source directory.
 uninstall	Remove tf executable, help files, and library from their
			installed locations.


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

If you do not explicitly define the file locations in unix/Config, TF will
try to install them in these places:

   /usr/local/bin and /usr/local/lib, if you used "sh unixmake local"; or,
   /usr/local/bin and /usr/local/lib, if you have write permission; or,
   $HOME/bin and $HOME/lib, if they exist; or,
   $HOME, if all of the above fail.

The man page is not installed by default.  To change the location of a
file, edit the appropriate variable in unix/Config, using a full path
name.

If SYMLINK is set in unix/Config, its value will be used as the name of a
symbolic link to the file named by TF.  This is useful for giving
all the files a name that includes a version number, so they can be
installed without problem even if old versions are currently in use.

If you move or rename any files after installing (this includes copying
TF to another machine where the file paths are different), you must let
TF know.  One way is to edit unix/Config and compile again.  The other is to
set environment variable TFLIBDIR to the new path before running tf.
This can be done with a shell script like this:

    #!/bin/sh
    TFLIBDIR=/new/location/of/lib/tf-lib
    export TFLIBDIR
    exec /new/location/of/bin/tf $*

The variables TFHELP and TFLIBRARY can also be set in the environment,
but this should not normally be necessary, since their default values are
based on TFLIBDIR.


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

If you have write permission in /usr/local/bin and /usr/local/lib, TinyFugue
will be installed there by default.  Or you can use "unixmake local" or
change the locations by editing unix/Config as described above.  The Makefile
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 using
the /restrict commands in %{TFLIBDIR}/local.tf.  See ../README.


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

unix/tfconfig will try termcap-compatible libraries in this order: the
one specified in unix/Config (if any); termcap; ncurses; curses.
If none of those work, tf will use hardcoded vt100 codes.


Installation Problems
---------------------

The unix/tfconfig script can usually figure out everything it needs to
know to configure TinyFugue for your unix-like system.  But if it fails
because your system is brain damaged, you may need to edit some lines
in the unix/Config file.  Try installing with the defaults at least once
before making any of these changes.


Problem: On AIX 4.1, a bug in gcc 2.8.0 causes /addworld and some operators to
  fail with an error like "% internal error: reduce: bad op 037777777703"
Solution: use a different compiler (cc or xlc) or a different version of
  gcc (2.7.2 is known to work).

Problem: On SunOS 5.4 (Solaris 2.4), connections fail with "Resource
  temporarily unavailable".
Solution: Install patch 101945(?) from sunsite.unc.edu/pub/patches

Problem: On OSF/1 with gcc, compile errors involving 'sigval_t',
  'union sigval', or 'clock_id'.
Solution: in Config: CC=cc

Problem: With gcc, compile errors involving va_list or __builtin_va_alist.
Solution: in Config: CC=cc

Problem: Hostnames don't work on SunOS 4.0.x.
Solution: in Config: LIBS='-lresolv'

Problem: Ioctl or tcgetattr errors when compiled with gcc.
Solution: in Config: FLAGS='-traditional'

Problem: Your system is Apollo Domain/OS.
Solution: in Config: FLAGS='-U__STDC__'

Problem: On debian linux, undefined references to tgetent, tgetstr, tgetnum,
  tgoto, tputs.
Solution: Get an ELF termcap library, or add /usr/i486-linuxaout/bin to your
  PATH.

Problem: On DYNIX/ptx 4 or later, runtime error saying that -linet is not
  needed.  (Why do they have it if it's not needed!?)
Solution: Run "./unixmake config", edit src/Makefile to remove "-linet"
  from the LIBS line, and run "./unixmake".


SOCKS Proxy
-----------

TF supports the SOCKS proxy server.  If your site uses SOCKS to connect
to outside hosts through a firewall (this is probably true if you use
"rtelnet" instead of "telnet"), then set SOCKS='yes' in the unix/Config file.

TF can also be made to connect through a generic proxy server by setting
the %proxy_host variable at runtime.  See "/help proxy".


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

If you think TF won't compile because of a bug or incompatibility with
your system (you followed all the instructions, and it still won't
work), email the author at hawkeye@tf.tcp.com.  Please include the version
number of TF, and describe the type of system on which you are trying
to compile, or at the very least, the address of the system.  Use
"uname -a", if available, to get the system type; if not, look at the
message you see when you log in.  Also include the file "Build.log",
generated by unixmake (please send it in plaintext, not MIME encoded).
If TF does compile, but has other problems, read "/help bugs" before
mailing a report.


  For bug reports, questions, suggestions, etc., I can be reached by
  email at hawkeye@tf.tcp.com.  Please provide the following information:

    The version of TF (type "/version" in tf).
    The operating system version (on unix, type "uname -a" in the shell).
    If tf won't compile, send the Build.log file (in plaintext form).
    If you have a bug or core, give me all error messages from tf.
    If you have a bug or core, tell me what you did or what happened
        before the problem, and if the problem is repeatable.
    If you have a core, do _not_ send the core file.

