
wafeperl.tar.gz contains the necessary code to link Wafe 0.96
together with Perl 4.036. It allows to build a version of
Perl that has a few additional commands that allow to build
Xt based applications directly in Perl. 

The wafeperl kit can be used to build either an Athena Widget based
version (wafeperl) or an OSF/Motif based version (mofeperl).

Wafe was originally developed to provide graphical user frontends 
for programs in arbitrary programming languages. When Wafe is
used as a frontend, it executes as a separate process (coprocess)
linked via sockets to an application program. In the Wafe distribution
(wafe-0.96.tar.gz) there are various examples how to use Wafe together
with Perl. The applications ranges from various monitoring programs to
news reader, mailer and ftp clients. The Wafe applications from the 
distribution can show how to run an Perl application as a subprocess 
of Wafe or Wafe as a subprocess of Perl. 

This kit offers a third possibility to use Wafe together with Perl by
building an extended version of Perl, in which Wafe functions can be
called as use subprograms of Perl and Perl functions can be called
from wafe vice versa.

So far, I've made no attempt to check, which kind of modifications
are necessary in the mentioned wafe applications in order to
run them with wafeperl. Perl programs that issue select calls,
will not work as expected using the current version of wafeperl/mofeperl
since this select will conflict with the Xt event loop.

-----------------------------------------------------------------------
Changes:
  wafeperl-0.1 ... first public version of wafeperl
-----------------------------------------------------------------------
  wafeperl-0.2 
   -  fixed a bug with Perl's stack pointer which was not restored 
      correctly under certain circumstances. Thanks to the bug report
      from Adrian Phillips, who used extensively Xt timeout routines 
      implemented as Perl subroutines in mofeperl, that triggered this
      problem.
   -  new Perl command: &wafe_set(Tcl_Varname,Value)
      this command can be used to set a Tcl variable with the
      specified name to the given value, avoiding Tcl_Eval. There
      is no need to escape characters with special Tcl meaning (such
      as {}[]$\")
-----------------------------------------------------------------------
  wafeperl-0.2-patch1  
   a) Xt command line argument processing 
      (wafeperl will accept -display ..., -bg pink, etc)
   b) better application class names derived from the perl script
      (in order to use application default files, etc)
   c) support for editres protocol when used with 
      OSF/Motif + X11R5 (the Athena version supported
      editres from the beginning)

      Notes concerning (a): When the command line arguments are
      processed they are not removed automatically from Perl's
      @ARGV.  As it looks to me, arguments cannot be removed from
      the Perl argument list from the c level without patching Perl
      itself. For the time being, one can use the following trick to
      adjust @ARGV by using Wafe's argument list:

       sub setargv {
         @ARGV=();
         local($ARGC) = &wafe_cmd('return [set argc]');
         for($i=0; $i<$ARGC; $i++) {
             push(@ARGV,&wafe_cmd("return [lindex [set argv] $i]"));
         }
       }
       &setargv();
   
-----------------------------------------------------------------------

Installation:

Prerequesits: 
	perl 4.036 (source)
	Wafe 0.97
	wafeperl-0.2.tar.gz

Wafe 0.97 can be obtained for example from 

	ftp.wu-wien.ac.at:pub/src/X11/wafe/wafe-0.97.tar.gz

Step 1: Build Wafe as indicated in the Wafe distribution
Step 2: Build perl (we will need the .o files in the next step)
Step 3: expand wafeperl-0.2.tar.gz in the source tree
        of perl 4.036 such you get an directroy structur like

        .../perl-4.036/lib/...
        .../perl-4.036/usub/...
        .../perl-4.036/wafeperl/...

Step 4: cd to .../perl-4.036/wafeperl
        edit the Makefile to adjust library paths etc.
        LIBS and MLIBS should reflect the library paths and 
        libraries of your .../wafe/src/Makefile.
Step 5: make

Note: 
if you want to build wafeperl AND mofeperl (say: first wafeperl
and the mofeperl, then you have to cd to the wafe sources after
building wafeperl, reconfigure the Imakefile to use Motif, 
do an xmkmf;make clean_version;make, before you switch back to
the wafeperl directroy to "make mofeperl". 

Have fun
-gustaf
