Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH: functions with redirections
On Oct 1,  8:17pm, Peter Stephenson wrote:
} Subject: Re: PATCH: functions with redirections
}
} On Mon, 29 Sep 2014 14:37:35 -0700
} Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> wrote:
} > 
} > foo () { echo foo } >&3
} > 
} > becomes
} > 
} > foo () { { echo foo } >&3 }
} 
} This appears to be about the only way I could even conceivably get this
} to work --- otherwise it means reengineering multiple different ways of
} constructing and reading a dump file --- but even this appears too
} difficult.
It's also apparently wrong, if this ...
} +function is executed.  Any variables in the redirection are expanded
} +at the point the function is executed, but outside the function scope.
... is actually the way it's supposed to work.
} The main sticking point is where you need to add the wrapper
} you have an Eprog, and it's hard to convert that back into the form you
} need for adding additional components or glueing bits together ---
Yes.  This was what I ran into as well.
} So I'll simply document around this and be satisfied with the fact that
} it is possible to compile an autoload file like
} 
} foo() { echo foo } >&3
} 
} with or without the zsh kludge 'foo "$@"' stuck at the end.  I suspect
} compiling existing autoload files is much more common than compiling
} functions typed into the shell.
Hmm.
torch% cat /tmp/foo
foo() { echo foo } >&3
torch% zcompile -k /tmp/foo
torch% autoload foo
torch% FPATH=/tmp foo      
foo
Oops, the redirection didn't get applied.  But it does once the function
is loaded and then called:
torch% functions foo
foo () {
        echo foo
} >&3
torch% foo
zsh: 3: bad file descriptor
torch% 
Messages sorted by:
Reverse Date,
Date,
Thread,
Author