diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 2000-03-16 00:39:55 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 2000-03-16 00:39:55 +0000 |
commit | 2d44a00df196bcd2dc36a60f775b09af0a7d0bb9 (patch) | |
tree | 0bb9b2ecf54865f12d07450af2ce92ddda2dc32f /Src/exec.c | |
parent | e0e7f200809abacdab96ecbf73eea29efbcd06ba (diff) | |
download | zsh-2d44a00df196bcd2dc36a60f775b09af0a7d0bb9.tar.gz zsh-2d44a00df196bcd2dc36a60f775b09af0a7d0bb9.tar.xz zsh-2d44a00df196bcd2dc36a60f775b09af0a7d0bb9.zip |
zsh-workers/10149
Diffstat (limited to 'Src/exec.c')
-rw-r--r-- | Src/exec.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/Src/exec.c b/Src/exec.c index 120b55eb5..9a8e7cd5d 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -3153,13 +3153,13 @@ static int execautofn(Estate state, int do_exec) { Shfunc shf = state->prog->shf; - int noalias = noaliases; + int noalias = noaliases, ksh = 1; Eprog prog; pushheap(); noaliases = (shf->flags & PM_UNALIASED); - prog = getfpfunc(shf->nam); + prog = getfpfunc(shf->nam, &ksh); noaliases = noalias; if (prog == &dummy_eprog) { @@ -3169,7 +3169,7 @@ execautofn(Estate state, int do_exec) } if (!prog) prog = &dummy_eprog; - if (isset(KSHAUTOLOAD)) { + if (ksh == 2 || (ksh == 1 && isset(KSHAUTOLOAD))) { VARARR(char, n, strlen(shf->nam) + 1); strcpy(n, shf->nam); execode(prog, 1, 0); @@ -3205,7 +3205,7 @@ loadautofn(Shfunc shf) pushheap(); noaliases = (shf->flags & PM_UNALIASED); - prog = getfpfunc(shf->nam); + prog = getfpfunc(shf->nam, NULL); noaliases = noalias; if (prog == &dummy_eprog) { @@ -3360,7 +3360,7 @@ runshfunc(Eprog prog, FuncWrap wrap, char *name) /**/ Eprog -getfpfunc(char *s) +getfpfunc(char *s, int *ksh) { char **pp, buf[PATH_MAX]; off_t len; @@ -3376,7 +3376,7 @@ getfpfunc(char *s) sprintf(buf, "%s/%s", *pp, s); else strcpy(buf, s); - if ((r = try_dump_file(*pp, s, buf))) + if ((r = try_dump_file(*pp, s, buf, ksh))) return r; unmetafy(buf, NULL); if (!access(buf, R_OK) && (fd = open(buf, O_RDONLY | O_NOCTTY)) != -1) { |