[comp.archives] [mud] TF v1.5.3 beta 1 release

ghudson@cie.uoregon.edu (Greg Hudson) (05/06/91)

Archive-name: games/mud/tinyfugue/1991-05-04
Archive: belch.berkeley.edu:/pub/mud_clients/tf.* [128.32.152.202]
Original-posting-by: ghudson@cie.uoregon.edu (Greg Hudson)
Original-subject: TF v1.5.3 beta 1 release
Reposted-by: emv@msen.com (Edward Vielmetti, MSEN)

Tinyfugue v1.5.3 beta 1 is available for anonymous FTP at 
belch.berkeley.edu (128.32.152.202) and valkyrie.ecn.uoknor.edu 
(129.15.22.6).  The directory on both FTP servers is 
pub/mud_clients.
 
The changes since last release are:
 
1.5.3 beta1 (5/4/91)
-----------
Added in Madwand's TF status patch
Fixed portals
Corrected erroneous portal format in tf.help
Fixed -DOLD_LPPROMPTS option
The ---- <world name> ---- status line will only be displayed if
 -DLOUD_WORLDS is defined on the CFLAGS line.
-----------
 
Tinyfugue is a client for Tiny* servers.  It also has some support 
for LP-MUDs and DikuMUDs.  It replaces telnet, and has a huge 
variety of features, many of them superfluous.  The most notable of 
these are the ability to wrap text, the ability to split input and 
output into two windows, and the ability to do complicated 
automation.
 
Technical notes
---------------
 
TF v1.5.2.beta 5 was going to be my last release of TF, but the 
problem with portals is rapidly becoming more important with the 
Object Interchange Format development going on.  I can't guarantee 
that I've fixed it completely, but I fixed the most obvious 
problem.  In any case, I'd be quite happy to see someone put some 
effort into cleaning up TF.
 
The problem with portals was an outgrowth of the way TF does 
multiple server connections.  TF, being a line-based client, 
buffers remote input until it receives a full line (except when in 
/lp mode).  The proper way to do this, of course, is to have a 
buffer for each connection.  TF doesn't do it that way; it does it 
the same way as tinytalk used to-- that is, it has only one buffer.  
This worked great for tinytalk, because tinytalk was only supposed 
to handle one connection at a time.
 
When switching from world to world, TF has to clean out any partial 
lines sitting in its remote input buffer.  Ever since v1.5.0 beta 1 
or so, it's done this without losing any data; that is, it sticks a 
newline on the end of whatever's in the buffer and outputs it, and 
then switches to the new world.  This tends to be ugly, since the 
second half of the line (on a TinyMuck or TinyMUD, usually just a 
return) gets outputted when you get back, but it keeps you from 
losing output.
 
The portal problem occured because TF would get stuck in a loop.  
The normal way for TF to process input is:
 
1. Receive glob of input from server
2. Check to see if we have any full lines (if not, go to step 1).
3. Process a full line (check it for triggers, portals, etc).
4. Remove that line from the buffer
5. Return to step 2.
6. Return to step 1.
 
If we hit a portal, and are switching to a new world, TF's 
world-switching functions merrily decide to flush the buffer before 
announcing that we've hit a new world.  Since the line containing 
the portal hasn't yet been removed from the buffer, flushing the 
buffer involves flushing the portal line, and of course, checking 
it for portals.  I don't know why TF kicks out of this loop 
eventually, but apparently it does after about three iterations.
 
The fix was to prevent TF from flushing the buffer while switching 
worlds from a portal.  I used a cross-file global variable, which 
is really ugly, but then again, so is TF.
 
To anyone who plans to support TF (I originally received some 
offers, but no one seems to have released anything so far.  I was 
slightly worried about a multitude of new releases coming out from 
several sides after I stopped supporting the client, but apparently 
I needn't have worried), the solution to this whole mess is simply 
to put the buffers in the Sock structures in socket.c, eliminating 
the need for a flush_output() function completely.
 
Greg Hudson
ghudson@cie.uoregon.edu
Explorer_Bob@asylum, others
Platypus_Bob@furry

-- comp.archives file verification
belch.berkeley.edu
-rw-r--r--  1 10       0          116355 May  4 16:22 /pub/mud_clients/tf.1.5.2.beta1.shar.Z
-rw-r--r--  1 10       0             169 Apr 30 15:33 /pub/mud_clients/tf.note
found tinyfugue ok
belch.berkeley.edu:/pub/mud_clients/tf*