Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Extending zsh capabilities
- X-seq: zsh-workers 4255
- From: Mark Hessling <m.hessling@xxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxxx
- Subject: Re: Extending zsh capabilities
- Date: Thu, 30 Jul 1998 08:59:43 +1000 (EST)
- In-reply-to: <199807271213.OAA02354@xxxxxxxxxxxx>
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 <pws@xxxxxx> 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@xxxxxxxxxx
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/
------------------------------------------------------------------------
Messages sorted by:
Reverse Date,
Date,
Thread,
Author