From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15363 invoked from network); 29 Jul 1998 23:05:59 -0000 Received: from math.gatech.edu (list@130.207.146.50) by ns1.primenet.com.au with SMTP; 29 Jul 1998 23:05:59 -0000 Received: (from list@localhost) by math.gatech.edu (8.9.1/8.9.1) id SAA15597; Wed, 29 Jul 1998 18:58:29 -0400 (EDT) Resent-Date: Wed, 29 Jul 1998 18:58:29 -0400 (EDT) Date: Thu, 30 Jul 1998 08:59:43 +1000 (EST) From: Mark Hessling Subject: Re: Extending zsh capabilities In-reply-to: <199807271213.OAA02354@hydra.ifh.de> To: zsh-workers@math.gatech.edu Message-id: MIME-version: 1.0 Content-type: TEXT/PLAIN; charset=US-ASCII Resent-Message-ID: <"Oqqih.0.ep3.Kawlr"@math> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/4255 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu On Mon, 27 Jul 1998, Peter Stephenson wrote: > Bruce Stephens wrote: > > > Executing a Rexx program within a current process is straighforward, > > > I need to call the API function RexxStart() with the filename as one > > > of the arguments. The interface is simple; its knowing where to > > > hook it into zsh that is my biggest problem. > > > > How about, as a first cut, writing a builtin "rexx" which would > > execute a Rexx script? That could be done as a module (like stat). > > I would have thought that was a good place to start; adding additional > capabilities in modules is very much preferred from the development point > of view, and makes it much more likely the code would be acceptable in > the main distribution. This should be very easy: just take e.g. stat.c, > rename everything, and prune it right down so that you just have one > function bound to the builtin rexx which calls RexxStart on its filename. > > What you really then want is for a shell function beginning /* to run Rexx. > You can do this by sleight of hand. > > % fpath=(. $fpath) # just for convenience in this example > % alias '/*'='rexx_load $0' > % cat rexx_load > local file=$1 dir > for dir in $fpath; do > [[ -f $dir/$file ]] && file=$dir/$file && break > done > > print "Executing $file using Rexx" > > # rexx $file > > # Now force the calling function to return immediately. > trap 'return 0' EXIT > % cat rtest > /* This is to test rexx_load */ > Rexx commands here > % autoload rexx_load rtest > % rtest > Executing ./rtest using Rexx > > > This works because zsh allows you to alias '/*' which presumably isn't > going to appear as a command anywhere else. The other tricky bit is > the trap in rexx_load which forces its parent (in this case the function > rtest running under zsh, which you don't want to continue) to return > immediately, since the EXIT trap is executed in the surrounding context. > > You could extend rexx_load so that it redefines rtest to run rexx on > a series of commands (if e.g. rexx has a -e switch like perl), eliminating > the intermediate step for subsequent calls. > > -- > Peter Stephenson Tel: +39 50 844536 > WWW: http://www.ifh.de/~pws/ > Gruppo Teorico, Dipartimento di Fisica > Piazza Torricelli 2, 56100 Pisa, Italy > Thanks guys. I started to go this way, but got stumped early on. I downloaded zsh 3.1.3 and am attempting to build it. Unfortunately I am having problems :-( I have tried building zsh under HP-UX 9.04 and Solaris 2.5 and am getting the same errors. I've even tried replacing the HP-UX sed with the latest GNU sed, thinking it was a problem with sed, but that didn't help. If anyone can help with the following problems, please let me know. TIA. ................ output from ./configure --enable-dynamic ............. checking whether symbols in the executable are available... (cached) yes checking whether executables can be stripped... (cached) yes checking whether libraries can be stripped... (cached) yes creating ./config.status creating Makefile Can't open :Makefile.in creating Doc/Makefile Can't open :Doc/Makefile.in creating Etc/Makefile Can't open :Etc/Makefile.in creating Src/Makefile Can't open :Src/Makefile.in creating config.h :config.h.in cat: cannot open :config.h.in config.h is unchanged zsh configuration ----------------- zsh version : 3.1.3 ................................................................... With my very limited REGEXP knowledge I made a couple of changes and got the Makefiles and config.h created. Then, this is what I got on the first attempt at make: $ make if test D = N; then \ cat ./xmods.conf > modules-bltin; \ elif test yes != yes; then \ echo comp1 > modules-bltin; \ else \ echo > modules-bltin; \ fi ( cd .. && /bin/sh Src/mkmodindex.sh Src ) \ > modules.index.tmp Updated `modules.index'. cd .. && /bin/sh $top_srcdir/Src/mkmakemod.sh Src Makemod creating Src/Makemod.in creating Src/Makemod Can't open !Src/Makemod.in make: Fatal error: Don't know how to make target `prep' Current working directory /home/solaris/mark/zsh-3.1.3/Src make: Fatal error: Can't find `Makemod': No such file or directory Current working directory /home/solaris/mark/zsh-3.1.3/Src *** Error code 1 make: Fatal error: Command failed for target `headers' Current working directory /home/solaris/mark/zsh-3.1.3/Src *** Error code 1 make: Fatal error: Command failed for target `all' Cheers, Mark ------------------------------------------------------------------------ Mark Hessling Email: M.Hessling@qut.edu.au PO Box 203 http://www.lightlink.com/hessling/ Bellara AUTHOR of | MAINTAINER of QLD 4507 THE | PDCurses Australia Rexx/SQL | Regina Member of RexxLA: http://www.rexxla.org/ ------------------------------------------------------------------------