Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Extending zsh capabilities



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