
This is the README file of patch3 for Wafe 0.97.  

The new version features in the following items:

   - Enhanced connectivity for frontend applications: 
     The new version supports the command line option
     --S<socketString>, which can be of the form

       *  <socketName>
          example: --S/tmp/wafe.1052-1
       *  <port>
          example: --S8853
       *  <hostName:port>
          example: --Smohegan:8853
     
     If the --S option is used, Wafe establishes during its
     initialization a socket communication determined by the
     <socketString> and connects its standard input and
     output to the created socket.

     a) If <socketString> is of the form <socketName>, first
        the application program is responsible to create a
        unique socket name. Then it calls Wafe with the --S
        option, passing the socket name to Wafe.  Wafe
        creates the specified unix domain socket (like a
        server) and waits, until the client application
        program connects.  Wafe will remove the named socket
        on exit.

     b) If <socketString> is of the form <port>, Wafe binds
        the specified port (like a server) and waits for the
        application program to connect on it. Note, that the
        specified port is blocked on the host for the whole
        Wafe session.

     c) If <socketString> is of the form <hostName:port>, a
        simple two phase communication protocol is used to
        establish the connection.
         
         - In the first phase the application program on
           host <hostName> binds the specified port (like a
           server), spawns Wafe (for example using remote
           shell) with the option --S<hostName:port>. Wafe
           will connect to the specified host and port.

         - In the second phase Wafe will obtain a new unique
           port, and establish itself as a sever listening
           on the new port. The Wafe will send the new
           obtained port number as a ASCII string to the
           application program over the primary socket.  The
           application program reads the new port number
           form the primary socket and will connect to Wafe
           on the new port number and release the original
           port number such that another Wafe process can
           use <port> as well.

     A sample implementation of an application program
     exploiting all three types of socket connections is
     provides in wafe/apps/lang/sock.pl


   - If a Tcl procedure with the name "onExit" is defined
     (without arguments) it will be executed whenever Wafe
     exits.
        
   - Some optimizations in pixmap (.xpm) file handling for
     changePixmap. Pixmaps are now cached and have to be
     released via 'changePixmap <widget> <resource> <noPixmap>'
     where noPixmap can be "None", "ParentRelative", or
     "Unspecified".

     I am not really happy with the current implementation and
     consider a "unified" picture cache with the pixmaps for the
     HTML widget. However, the new version is better than the
     last one, and will be improved further in future versions.

   - The new distribution contains a small fix for wafemail
     concerning the resize behavior of the "config" button.  In
     addition, ctrl-n can be used for digest-like mails to skip
     to the next part of the mail starting with dashes.

   - The appearance of wafe/src/tcl/m-htmlBrowse is now Motif
     Style Guide compliant. Additionally m-htmlBrowse jumps on
     "back" operations to the correct scroll position (instead
     to the last used anchor).

   - There are a few changes in wafe/src/tcl/* and in the
     Imakefile of the distribution. Many thanks to Jim Wight for
     his suggestions!

   - Several #include files have been reconsidered to make
     Wafe easier portable on various systems based on Stephen 
     Gildea's helpful guide "Writing Portable X Code".
 
   - Many file names have been changed in this patchlevel to 
     comply with the X Consortium file name restrictions (only 
     wafe/src and below).


-gustaf 

PS: in order to apply this patch, be sure that your Wafe
installation is on the Wafe 0.97p2 level, cd to the Wafe
home directory, expand this tar file over the 0.97p2
distribution, remove wafe/lib/dbug/libdbug.a, perform the
usual configuration in wafe/src/Imakefile (as indicated in
INSTALL) or use the new TOPMAKE (read the top section of
wafe/src/TOPMAKE).

PPS: Please, can someone with Motif 1.2.3 (or newer) try the
following script: the scrollbar position "value" should be the
same when obtained via getValues or XmScrollBarGetValues. 
However, the latter returns garbage (at least under Linux 1.0
and MetroLink Motif 1.2.3).  Can please someone with new Motif
version try this script to figure out whether this is a
Linux-only problem. Thanks in advance.
==================================================================
#../mofe --f
XmRowColumn rc topLevel
XmPushButton pushMe rc \
    activateCallback {
       XmScrollBarGetValues sb val size incr page
       puts stderr "value: XmScrollBarGetValues> $val =?= [gV sb value] <gV"
    }
XmScrollBar sb rc height 200
XmPushButton quit rc activateCallback %w
realize
==================================================================
